Java for循环,条件不递增

时间:2015-11-08 08:10:43

标签: java for-loop

这可能是一个愚蠢的问题,但我很困惑。

我有一个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”。

有任何帮助吗?谢谢!

3 个答案:

答案 0 :(得分:5)

如果您只想跳过第一次迭代,则必须在循环内移动x != r条件。在循环条件中具有x != r条件意味着如果rx都被初始化为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中选择随机数生成。