if-statement with continue或break

时间:2018-04-29 14:30:33

标签: java if-statement break continue

我正在进行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

正确的信息是什么? 什么是正确的(书籍或模拟测试)?

这是表格:

Table 2.5 - page 91 - OCA Java book

非常感谢!

4 个答案:

答案 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 statementbreak statement以及Java中所有不同类型的循环。

答案 2 :(得分:0)

书本和测试模拟器都是正确的。 break内不允许使用continueif个关键字。您在continue内看到的if完全有效,因为它出现在外while的上下文中,所以没关系。要将其全部包装起来,当您启动whilefor块时,使用breakcontinue此块内的任何位置都是正确的,即使它恰好位于if内{1}}阻止。

答案 3 :(得分:-1)

通常中断继续在if语句中是允许的,但是你不应该经常使用它们,因为它是不好的编码stlye。

* unit =单元测试框架

一个原因就是例如:如果你试图用单元测试你的软件(如果你不知道单位还不担心:D)那么通常很难理解代码的作用并且还要测试代码。

祝你好运,希望我可以帮助你