【发布时间】:2018-09-26 22:46:09
【问题描述】:
这个问题有点混乱,所以我将尝试通过代码和示例进行解释。
如果满足条件,我如何减少计数器?听起来很简单吧?但是,如果该方法在 for 循环中不断被调用,以便传递给它的值被重置怎么办?
示例: 我有一个包含几页的文档,但是其中一些页面是空白的,我不想计算它们。
对于第一页为空白的 5 页文档。我想完成以下行为:
page 1: nothing...
page 2: 1 of 4
page 3: 2 of 4
page 4: 3 of 4
page 5: 4 of 4
目前它包括空白页作为页数的一部分。
这是一个代码示例:
static main() {
// et cetera
for(Page page : pages) {
int pageNumber = page.getPageNo();
int pageCount = page.getTotalPageCount();
form.getTemplate().writePageNumber(page, pageNumber,pageCount);
}
}
因此,在主程序中,我在 for 循环中调用了一个名为 writePageNumber() 的方法,在该循环中我传入了 currentPageNumber 和 totalPage 计数。
public boolean writePageNumber(Page page, int currentPageNo, int totalPageCount) {
if ( !page.isBlank() ) {
this.write(currentPageNo, totalPageCount);
}
else if ( page.isBlank() ){
currentPageNo--;
totalPageCount--;
}
// et cetera
}
现在在 writePageNumber() 方法中,我获取页面上下文并进行处理。我检查页面是否不空白然后我写totalPages的currentPage,如果它是空白那么我减少currentPage No和totalPage计数......以便不计算空白页面......这是正确的方法去做吧?不确定
由于该方法是在for循环中调用的,我递减后的值会被重置,如何维护递减的值?
可能有更好的方法来做到这一点,任何帮助将不胜感激。
编辑:
为了清楚起见,问题在于 writePageNumber() 是从 for 循环中调用的,因此下次调用 writePageNumber 时,值会被重置,因此在第二次迭代期间 else if 条件不再为真,第一个条件为真所以写错页码
【问题讨论】:
-
对不起,但不明白问题出在哪里......无论如何,如果你需要返回两个值,你可以用类包装它
-
试试这个: if ( !page.isBlank() ) { this.write(page.getPageNo(), page.getTotalPageCount()); } else if ( page.isBlank() ){ page.getPageNo()--; page.getTotalPageCount()--; }
-
@AsfK 我编辑了我的问题并添加了细节,希望现在应该更清楚
-
@dkb 问题是从 for 循环中调用,因此下次调用 writePageNumber 时,值会被重置,因此在第二次迭代期间 else if 条件不再为真,第一个条件为true 所以写错页码
-
在您的更新版本中,方法调用的参数与其参数不匹配。
标签: java algorithm for-loop counter decrement