我正在进行Java OCA测试的模拟。在我学习“OCA - 学习指南”这本书的过程中。 (Sybex),在第二章中有以下内容(表2.5,第91页):
if - 允许break语句:NO
if - 允许继续声明:否
但是在Java OCA测试的模拟过程中,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
正确的信息是什么? 什么是正确的(书籍或模拟测试)?
这是表格:
非常感谢!
答案 0 :(得分:0)
我认为继续这里是跟随外部while循环不是立即如果,因为继续被允许内部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
答案 1 :(得分:0)
我认为您需要了解的是,在您的代码中,if
语句是INSIDE a while循环(在另一个while循环中),这就是为什么它可以在这种情况下使用continue
。循环外的if
语句不允许使用continue
。但是在for循环,while循环或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,其中涵盖了continue statement,break statement以及Java中所有不同类型的循环。
答案 2 :(得分:0)
书本和测试模拟器都是正确的。 break
内不允许使用continue
和if
个关键字。您在continue
内看到的if
完全有效,因为它出现在外while
的上下文中,所以没关系。要将其全部包装起来,当您启动while
或for
块时,使用break
和continue
此块内的任何位置都是正确的,即使它恰好位于if
内{1}}阻止。
答案 3 :(得分:-1)
通常中断和继续在if语句中是允许的,但是你不应该经常使用它们,因为它是不好的编码stlye。
* unit =单元测试框架
一个原因就是例如:如果你试图用单元测试你的软件(如果你不知道单位还不担心:D)那么通常很难理解代码的作用并且还要测试代码。
祝你好运,希望我可以帮助你