带 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

通常 breakcontinue 允许出现在 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.

书本和考试模拟器都对。 breakcontinue 关键字不允许在 if 内。您在 if 内部看到的 continue 是完全有效的,因为它出现在外部 while 的上下文中,所以没关系。总而言之,当你开始一个 whilefor 块时,在这个块内的任何地方使用 breakcontinue 都是正确的,即使它恰好在 if块。