假设n = 20
所以在每6次迭代后我会做一些处理
int i=0
for (t=6;t<20;t=t+6){
while(i<=t){
will do some processing
i++;
}
}
在上面的代码中,它将在t = 18时终止,但我想继续到20。 怎么做?
答案 0 :(得分:2)
您正在增加t变量6个单位...满足t<20
的最后一个条件是t = 18
。
而不是t+=6
执行正常t++
并使用模%6
示例:
public static void main(String[] args) {
int n = 20;
for (int i = 0; i < n; i++) {
//TODDY
insert your while in here depending on when that must be executed
if (i % 6 == 0) {
System.out.println("am on a 6 modulo step..." + i);
} else {
System.out.println("foo@" + i);
}
}
System.out.println("done");
}
答案 1 :(得分:1)
行为只是正确的..如果您想执行任何操作,请在满足条件后执行此操作,请尝试以下代码段:
int i = 0, n = 20;
do{
i += 6;
System.out.println(i);
} while (i < n);
System.out.println(i);
答案 2 :(得分:1)
你的代码每6次迭代都没有做某事,而是你正在做(n - n%6)次。你的“会做一些处理”是在里面。如果您在那里添加打印(或调试),您会注意到它;在n = 20的例子中,while将被执行18次;它会做18次。
如果你想要执行每第6次迭代,并且对于不能被6整除的情况包含一个额外的,那么你可以这样做:
if (n == 0) {
return;
}
int number_iterations = n/6 + (n%6!=0 ? 1:0);
for (int i=0; i<number_iterations; i++) {
// do something
}
这涵盖了你的要求;如果没有,请编辑问题以更清楚您的确切需求。