代码之家  ›  专栏  ›  技术社区  ›  John Joe Mayank Nema

Java中的Continue语句

  •  0
  • John Joe Mayank Nema  · 技术社区  · 7 年前

    我添加了一个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)
    
    5 回复  |  直到 7 年前
        1
  •  2
  •   Gianlucca Eystein Bye    7 年前

    这会奏效的。

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

    当你不添加 {} 给你的 if 声明,只考虑下一行。因此,你需要离开 sum += number 外部 这个 {}

        2
  •  1
  •   Marvin    7 年前

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

        3
  •  1
  •   M. le Rutte    7 年前

    { 你有效地写道:

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

    这个 sum += number 只要表达式为 false .

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

    这个 总和+=数字 ; 由于表达式为 true 由于 continue ,如果表达式为 它不会被执行,因为它不在block语句中。

        4
  •  1
  •   Miadnew    7 年前

    正如其他答案所说,只有第一行代码将在if语句之后运行。然而,另一条规则是,在if语句中的“continue”语句之后不能再添加任何代码行。这就是错误所在。如果您要调整代码以切换“总和+=数字;”使用continue,您将不会收到相同的错误。希望这有帮助。

        5
  •  0
  •   juanmirocks    4 年前

    你执行 sum += number; 内花括号( {} )您的if块:

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

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