在 Java 中继续声明

Continue statement in Java

我添加了一个 continue 语句来结束当前迭代,这样循环体中的其余语句就不会被执行。

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        int number = 0;
        while (number < 20) {
            number++;
            if (number == 10 || number == 11)
                continue;
            sum += number;
        }
        System.out.println(sum);
    }
}

我不明白的是为什么我添加 {} 会出错?

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        int number = 0;
        while (number < 20) {
            number++;
            if (number == 10 || number == 11) {
                continue;
                sum += number;
            }
        }
        System.out.println(sum);
    }
}

错误

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Unreachable code

    at Main.main(Main.java:18)

这行得通。

if (number == 10 || number == 11) {
    continue;
}
sum += number;

说明

如果您不将 {} 添加到 if 语句中,则只会考虑下一行。因此,您需要将 sum += number 留在 之外 {}

因为 continue 语句在您的分支中是最终语句(在 {} 之间),所以下一条语句 (sum += number) 永远不会执行。你的 IDE 必须警告你,这就是为什么它没有编译它并且你得到错误。

在你的第一个块中,没有 { 的那个你有效地写了:

if (number == 10 || number == 11) {
      continue;
}
sum += number;

sum += number是可达的,只要表达式是false.

在第二个你实际上写了:

if (number == 10 || number == 11) {
       continue;
       sum += number;
}

sum += number;已经变得不可访问,因为如果表达式是 true,它总是会被跳过,因为 continue,如果表达式是 false,它不会被执行,因为它不在块语句中.

正如其他答案所说的那样,只有第一行代码会在 if 语句之后 运行。但是,另一个规则是您不能在 if 语句中的 "continue" 语句之后添加更多代码行。所以,这确实是错误。如果您要调整代码以使用 continue 切换 "sum += number;",您将不会收到相同的错误。希望这有帮助。

您在 if-block:

的大括号 ({}) 内执行 sum += number;
if (number == 10 || number == 11) {
    continue;
    sum += number;
}

这会起作用:

if (number == 10 || number == 11) {
    continue;
}
sum += number;