尽管在最后发表声明

时间:2015-09-28 07:14:15

标签: java do-while

有人能告诉我一些在线资源定义这种奇怪的行为吗?

int i = 0;
do while ( ++i < 1 ) { //this compile (?!?)
      System.out.print("i is " + i);
}

do while ( ++i < 1 )  // this compile also
      System.out.print("i is " + i);
do while ( i > 1 ) {}

while ( i > 1 ) {} //this doesn't compile, the comp. wants the semicolon

抱歉,我遗漏了do-while声明中的内容?

在Oracle官方链接上,根本没有提到: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html

编辑: 对不起,我将嵌套的while解释为另一个语句。

这是让我困惑的原始陈述:

int i = 1;
do while ( i < 1 )
System.out.print("i is " + i);
while ( i > 1 );

这个编译......相当于:

do {
    while ( ++i < 1 )  // this compile also!
    System.out.print("i is " + i);
}
while ( i > 1 );

3 个答案:

答案 0 :(得分:1)

在你发布的oracle链接中都解释了:

The Java programming language also provides a do-while statement, which can be expressed as follows:

do {
     statement(s)
} while (expression);

如果我在我的IDE(Eclipse)上复制代码,这是我的结果:

int i = 0;
do while ( ++i < 1 ) { //DO NOT COMPILE,Syntax error, insert "while ( Expression ) ;" to complete DoStatement
      System.out.print("i is " + i);
}

do while ( ++i < 1 )  // DO NOT COMPILE,Syntax error, insert "while ( Expression ) ;" to complete DoStatement
      System.out.print("i is " + i);

while ( i > 1 ) {} //COMPILE
do while ( i > 1 ) {} //DO NOT COMPILE,Syntax error, insert "while ( Expression ) ;" to complete DoStatement

答案 1 :(得分:0)

我不确定你在问什么。

while(i>1){}//this doesn't compile.

这是正确的语法。

do-while代码行的正确语句是

do {
     //code goes here
} while (i > 1);

我想我应该指出,代码行代码将执行括号内的代码,然后检查是否需要重复。然而,一段时间的陈述将检查它是否&gt; 1如果为true,它将运行代码。

希望这有帮助。

答案 2 :(得分:0)

虽然语法不对。 你应该以更简单的方式思考这个问题 - &gt;做某事直到(条件) 所以这里是语法

do{
//statement
}while(condition is true);