【问题标题】:Java Code : control variable in for loopJava代码:for循环中的控制变量
【发布时间】:2015-08-10 10:05:16
【问题描述】:
for (int page = 0; page < pageNum;) {
    copy.addPage(copy.getImportedPage(reader, ++page));
}

这里++page是控制变量被修改了,如何更好的实现?

【问题讨论】:

  • 你真的想要预增量(++page)吗?
  • 更好,在什么意义上?您只是想提高可读性还是功能?

标签: java variables for-loop optimization


【解决方案1】:

当您无法控制增量操作时,请尝试使用 while

int page=0;
while(page<pageNum){
    copy.addPage(copy.getImportedPage(reader, ++page));
}

【讨论】:

    【解决方案2】:

    你是这个意思吗?

    for (int page = 0; page < pageNum; page++) {
        copy.addPage(copy.getImportedPage(reader, page+1));
    }
    

    【讨论】:

    • 要具有完全相同的行为,我认为它必须从 page = 1 开始。OP 使用的是预增量运算符。不过,我想知道这是否真的是他想要做的。
    • 不,实际上在addPage方法内部页面变量需要先递增传递,然后循环递增值
    • @user1659644 你的问题还不清楚。说明你想要实现什么,你得到了什么,以及为什么这是错误的
    • @Fildor 不,要具有完全相同的行为,只需更改:copy.getImportedPage(reader, page + 1)
    • 这可以用while代替for来实现
    【解决方案3】:
    copy.addPage(copy.getImportedPage(reader, ++page));
    

    使用前自增运算符,值将首先更新

    即,它将以页面的增量值为 1 进行调用

    copy.addPage(copy.getImportedPage(reader, page++));
    

    使用后增量运算符,值将在之后更新

    即它将以页面的非递增值为0来调用

    根据您的要求使用前置或后置增量运算符。

    【讨论】:

      【解决方案4】:

      你可以用不同的方式做到这一点

      1

              for (int page = 1; page <= pageNum; ++page) {
                  copy.addPage(copy.getImportedPage(reader, page));
              }
      

      2

              for (int page = 1; page <= pageNum; page++) {
                  copy.addPage(copy.getImportedPage(reader, page));
              }
      

      3

              int page = 1;
              while (page <= pageNum) {
                  copy.addPage(copy.getImportedPage(reader, page));
                  page++;
              }
      

      4

              int page = 0;
              while (page < pageNum) {
                  page++;
                  copy.addPage(copy.getImportedPage(reader, page));
              }
      

      5

              int page = 0;
              while (page < pageNum) {
                  copy.addPage(copy.getImportedPage(reader, ++page));
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 2011-05-28
        • 2013-11-25
        • 2021-02-06
        • 1970-01-01
        相关资源
        最近更新 更多