这可能是一个愚蠢的问题,但我很困惑。
我有一个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”。
有任何帮助吗?谢谢!
答案 0 :(得分:5)
如果您只想跳过第一次迭代,则必须在循环内移动x != r
条件。在循环条件中具有x != r
条件意味着如果r
和x
都被初始化为0
,则永远不会输入循环,因为循环终止时循环的条件变为假。
for (x = 0; x < 2; x++) {
if (x != r) {
// do something if (x != r)
}
}
答案 1 :(得分:0)
for (initialization; termination condition; increment) {
statement(s)
}
以上代码将运行:
initialization
termination condition
statement
increment
termination condition
statement
increment
termination condition
statement
increment
....
所以你应该删除条件x != r
,因为在它第一次运行语句之前,它会检查那个条件并返回false。
你应该注意到这一点。没有条件x != r
,你的循环只运行两次:x = 0和x = 1.也许在你的代码中,那些值(0和1)不输出任何值。
答案 2 :(得分:0)
我认为如果放置它会很棒 (r> = 0) 然后直接从0中选择随机数生成。