【发布时间】:2015-11-08 08:10:42
【问题描述】:
这可能是一个愚蠢的问题,但我很困惑。
我有一个排除给定迭代(随机数)的 for 循环。它适用于选择的任何大于 0 的随机数。但是,如果它为零,则它永远不会进行单次迭代:
int x;
for (x = 0; ((x < 2) && (x != r)); x++) {
// do something if (x != r)
}
System.out.println("X : " + x);
对于它不工作的例子,r = 0。 这不应该意味着它应该跳过第一次迭代但第二次吗?
上面的 println 产生 "X : 0"。
有什么帮助吗?谢谢!
【问题讨论】:
-
它从不进行单次迭代,因为您需要
x != r而您的x首先设置为 0,例如您的r,导致您的条件返回false而不是输入循环 -
因为条件 (x
-
不,第二个表达式用作结束循环的一种方式。如果表达式计算结果为假,则退出循环:docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
-
哦,我现在明白了。愚蠢的错误!感谢大家的帮助。
-
@tj56 当第一个条件(第二个表达式)为假时,循环存在,循环结束后继续执行。