Java 为什么这个循环会打印10-20之间的所有值?我想让它打印出可以被5整除的值 intz=10; int x=5; 布尔t=((z%x)==0); 而(t&(z

Java 为什么这个循环会打印10-20之间的所有值?我想让它打印出可以被5整除的值 intz=10; int x=5; 布尔t=((z%x)==0); 而(t&(z,java,while-loop,Java,While Loop,我希望它打印第10、15和20个值,但它打印的是10-20之间的所有值。我不明白为什么?您的t从未改变,而且确实没有必要改变,因为您可以在每次迭代中检查条件是否正确 int z=10; int x=5; boolean t= ((z % x) == 0); while ( t && (z < 21)) { s +=String.format("%8d", z)+this.mp.outstandingAfter(z, "%16.0f");

我希望它打印第10、15和20个值,但它打印的是10-20之间的所有值。我不明白为什么?

您的
t
从未改变,而且确实没有必要改变,因为您可以在每次迭代中检查条件是否正确

int z=10;
int x=5;
boolean t= ((z % x) == 0);
while ( t && (z < 21))
       {
           s +=String.format("%8d", z)+this.mp.outstandingAfter(z, "%16.0f");
           s+= "\n\n";
           z++;
       }
intz=10;
int x=5;
而(z<21){
如果((z%x)==0){
s+=String.format(“%8d”,z)+this.mp.outstandingAfter(z,“%16.0f”);
s+=“\n\n”;
}
z++;
}

t
永远不会更改。我建议您在调试器中逐步检查代码以更好地理解。这不会按他希望的方式工作,因为一旦t变为false(z=11),循环就会停止。因此,它将在找到第一个不能被5整除的数字后停止,并只打印出
10
<代码>t不能是while条件的一部分。必须在循环中使用额外的if语句进行检查。您是对的。事实上,
t
甚至不需要。他所需要做的就是在打印之前检查z%x==0。为什么要使用
x
?在这种情况下,不需要它,但假设他想修改规则,现在他希望所有数字都能被4整除。X在这里更有意义,但在这个例子中,很明显,X甚至不需要,如果他再也不需要这个值的话;非常感谢你!
int z=10;
int x=5;
while (z < 21) {
    if((z % x) == 0) {
        s +=String.format("%8d", z)+this.mp.outstandingAfter(z, "%16.0f");
        s += "\n\n";
    }
    z++;
}