有人能告诉我一些在线资源定义这种奇怪的行为吗?
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 );
答案 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);