带 continue 或 break 的 if 语句
if-statement with continue or break
我正在模拟Java OCA 测试。在我学习 "OCA - Study Guide" (Sybex) 这本书期间,在第二章中有以下内容(Table 2.5,第 91 页):
if - 允许中断语句:否
if - 允许继续语句:否
但是在模拟JavaOCA测试的时候,Sybex(OCA在线书籍)做的,有这个问题:
int x= 5;
while (x>=0) {
int y = 3;
while (y>0) {
if (x<2)
continue;
x--; y--;
System.out.println(x*y + " ");
}
}
我的回答是:它不编译
但正确答案是:
8个
3个
0
2
正确的信息是什么?
什么是正确的(书本或模拟测试)?
这是table:
非常感谢!
我认为这里的 continue 是在外部 while 循环之后,而不是立即执行 if ,因为在 while 循环内部允许继续,所以它可以工作。
public static void main(String[] args) {
int x= 5;
//while (x>=0) {
int y = 3;
//while (y>0) {
if (x<2)
continue;
x--; y--;
System.out.println(x*y + " ");
}
}
// }
// }
Error:(10, 21) java: continue outside of loop
通常 break 和 continue 允许出现在 if 语句中,但你不应该经常使用它们,因为它是糟糕的编码风格。
*unit = 单元测试框架
例如,原因可能是:如果您尝试使用单元测试您的软件(如果您还不知道单元,请不要担心 :D)理解代码的作用比通常情况下要难得多,也更难测试代码。
祝你好运,玩得开心希望我能帮助你
我认为您需要了解的是,在您的代码中,if
语句在一个 while 循环内(在另一个 while 循环内),这就是为什么可以使用 continue
在这种情况下。循环外的 if
语句不允许使用 continue
。但是在 for 循环、while 循环或 do while 循环中,您可以在 if
语句中使用 continue。
因此您提供的代码有效,输出为:
8
3
0
2
但后来我拿了你的代码并注释掉了两个 while 循环,现在代码无法编译:
int x= 5;
// while (x>=0) {
int y = 3;
// while (y>0) {
if (x<2)
continue; //<-- COMPILE ERROR: continue cannot be used outside of a loop
x--; y--;
System.out.println(x*y + " ");
// }
// }
输出为:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
continue cannot be used outside of a loop
我写的很详细Java looping tutorial that covers the continue statement, the break statement,所有不同类型的循环都在Java.
书本和考试模拟器都对。 break
和 continue
关键字不允许在 if
内。您在 if
内部看到的 continue
是完全有效的,因为它出现在外部 while
的上下文中,所以没关系。总而言之,当你开始一个 while
或 for
块时,在这个块内的任何地方使用 break
和 continue
都是正确的,即使它恰好在 if
块。
我正在模拟Java OCA 测试。在我学习 "OCA - Study Guide" (Sybex) 这本书期间,在第二章中有以下内容(Table 2.5,第 91 页):
if - 允许中断语句:否
if - 允许继续语句:否
但是在模拟JavaOCA测试的时候,Sybex(OCA在线书籍)做的,有这个问题:
int x= 5;
while (x>=0) {
int y = 3;
while (y>0) {
if (x<2)
continue;
x--; y--;
System.out.println(x*y + " ");
}
}
我的回答是:它不编译 但正确答案是: 8个 3个 0 2
正确的信息是什么? 什么是正确的(书本或模拟测试)?
这是table:
非常感谢!
我认为这里的 continue 是在外部 while 循环之后,而不是立即执行 if ,因为在 while 循环内部允许继续,所以它可以工作。
public static void main(String[] args) {
int x= 5;
//while (x>=0) {
int y = 3;
//while (y>0) {
if (x<2)
continue;
x--; y--;
System.out.println(x*y + " ");
}
}
// }
// }
Error:(10, 21) java: continue outside of loop
通常 break 和 continue 允许出现在 if 语句中,但你不应该经常使用它们,因为它是糟糕的编码风格。
*unit = 单元测试框架
例如,原因可能是:如果您尝试使用单元测试您的软件(如果您还不知道单元,请不要担心 :D)理解代码的作用比通常情况下要难得多,也更难测试代码。
祝你好运,玩得开心希望我能帮助你
我认为您需要了解的是,在您的代码中,if
语句在一个 while 循环内(在另一个 while 循环内),这就是为什么可以使用 continue
在这种情况下。循环外的 if
语句不允许使用 continue
。但是在 for 循环、while 循环或 do while 循环中,您可以在 if
语句中使用 continue。
因此您提供的代码有效,输出为:
8
3
0
2
但后来我拿了你的代码并注释掉了两个 while 循环,现在代码无法编译:
int x= 5;
// while (x>=0) {
int y = 3;
// while (y>0) {
if (x<2)
continue; //<-- COMPILE ERROR: continue cannot be used outside of a loop
x--; y--;
System.out.println(x*y + " ");
// }
// }
输出为:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
continue cannot be used outside of a loop
我写的很详细Java looping tutorial that covers the continue statement, the break statement,所有不同类型的循环都在Java.
书本和考试模拟器都对。 break
和 continue
关键字不允许在 if
内。您在 if
内部看到的 continue
是完全有效的,因为它出现在外部 while
的上下文中,所以没关系。总而言之,当你开始一个 while
或 for
块时,在这个块内的任何地方使用 break
和 continue
都是正确的,即使它恰好在 if
块。