而Java中的循环怪异

时间:2010-12-30 22:41:17

标签: java loops while-loop

我注意到java(因此可能是C)对此没有任何问题:

while(condition1) {
    //do somethin'
} while(condition2);

这是否与:

相同
while(condition1 && condition2) {
    //do somethin'
}

3 个答案:

答案 0 :(得分:14)

不,你有两个循环。

while(condition1) {
  // do something
}

while(condition2); // second loop which does nothing.

第二个循环与

相同
while(condition2) { }

编辑:我的建议是定期在IDE中使用自动格式化程序。否则,您可以创建格式,表明代码执行的操作不是。

示例1

if (condition)
    statement1;
    statement2;
statement3;

在这个例子中,前两个语句似乎是if条件的一部分,但只有第一个是。

示例2

http://www.google.com/
statement;

看起来不像合法的Java,但不是因为格式化建议的原因;)

答案 1 :(得分:4)

不,他们是不同的。

第一个while(condition1)将首先运行。

然后是while(condition2),除了单个;之外什么都没有,这意味着它只是一些空话。

请记住,在ifforwhile这样的控制块中,如果您不使用{}括号,那么只有第一个立即声明后它将被视为其中的一部分。

示例:

if (condition)
    System.out.println("hello"); // prints only if condition is true.
    System.out.println("no"); // not bound to the 'if'. Prints regardless.

while (condition)
    ; // do nothing!
    System.out.println("something"); // not bound to the while

编辑Java code conventions

中提到了空的while循环
  

7.6 while语句

     

while语句应具有以下形式:

while (condition) {
    statements;
}
  

空的while语句应具有以下形式:

while (condition);

答案 2 :(得分:-1)

没有构造是java,如第一种形式所示。你可能已经看过了

do {

} while (cond)

编辑:您误读了第一张表格。在}之后应该有一个换行符。这也使我感到困惑。