我的编译器吃了这个:
do while (condition1) {
// do something
} while (condition2);
Oracle没有明确表示它可能http://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html,但我的编译器接受这两个条件。这实际上是否有用,或者我有什么理由不这样做?
构造非常有意义,因为我们通常有两个条件,例如计数器和对象,在进入循环时,只需要立即检查其中一个条件。
我知道我可以使用if语句并中断; - 我只是想知道是否有理由不使用这两个标准。
答案 0 :(得分:4)
Oracle没有明确表示可能
事实上,这是不可能的。
你的例子不是循环的双重标准。
它被翻译成:
do {
while (condition1) {
// do something
}
} while (condition2);
答案 1 :(得分:4)
你有什么
do {
while (condition1) {
// do something
}
} while (condition2);
只要do something
成立,condition1
就会重复执行,然后在condition2
成立时再次启动整个循环。
答案 2 :(得分:0)
为什么不这样做:
if(condition1) {
do {
// your code here
} while (condition1 && condition2)
}
不是你的双重条件的忠实粉丝,因为它令人困惑
答案 3 :(得分:0)
这个代码构造实际上是有效的,Java编译器运行它没有错误或异常。
它背后的逻辑是,这些循环是嵌套的。 while循环嵌套在do-while中。
这里java编译器将do-while体内的while循环视为单行语句,可以在没有括在大括号之间的情况下编写。
相当于
for(int i=0; i<10; i++)
for(int j = 0 ; j<10; j++){
//statements;
}
或
while(condition)
for(int j = 0 ; j<10; j++){
//statements;
}
在给定的代码构造中,对括号的主体构成while循环的主体,而不是外部do-while循环的主体,如在for循环构造中那对括号使得内部的主体为循环。
do while (condition1) {
// do something
} while (condition2);
这是有效的代码构造。