Java continue语句 - Java教程

由网友 大卫 发布 阅读 24

在本教程中,您将在示例的帮助下了解Java中的continue语句和标记为continue的语句。

在处理循环时,有时需要跳过循环中的某些语句,或者在不检查测试表达式的情况下立即终止循环。

在这种情况下,将使用break和continue语句。要了解该break语句,请访问Java break

Java中的continue语句跳过循环的当前迭代(for,while,do…while等),程序的控制权移到循环的末尾。并计算循环的测试表达式。

对于for循环,update语句在测试表达式之前执行。

continue语句几乎总是在(if ... else语句)决策语句中使用。它的语法是:

continue;

continue语句如何工作?

continue语句用于Java循环(for,while和do ... while循环)中,以跳过循环的当前迭代。
Java的continue语句工作流程图

示例1:Java继续语句

class Test {
    public static void main(String[] args) {
      
        // for循环
        for (int i = 1; i <= 10; ++i) {

            //如果i的值在4和9之间,则执行continue
            if (i > 4 && i < 9) {
                continue;
            }      
            System.out.println(i);
        }   
    }
}

输出

1
2
3
4
9
10

在上面的程序中,我们使用for循环来打印每次迭代中i的值。要了解for循环的工作原理,请访问Java for循环。在这里,请注意以下语句:

if (i > 5 && i < 9) {
    continue;
}

这意味着当i的值大于4小于9时,将跳过循环中的print语句。因此,我们将跳过值5、6、7和8的输出。

示例2:Java continue语句

下面的程序计算用户输入的5个正数的总和。如果用户输入负数或零,则将其从计算中跳过。

为了接受用户的输入,我们使用了该Scanner对象。要了解更多信息Scanner,请访问Java Scanner

import java.util.Scanner;

class AssignmentOperator {
    public static void main(String[] args) {
      
        Double number, sum = 0.0;
        //创建Scanner对象
        Scanner input = new Scanner(System.in);
      
        for (int i = 1; i < 6; ++i) {
            System.out.print("输入一个数字: ");
            //接受double类型的数据输入
            number = input.nextDouble();
         
            //如果number为负数,则跳过迭代
            if (number <= 0.0) {
                continue;
            }
         
            sum += number;
        }
        System.out.println("Sum = " + sum);
    }
}

输出

输入一个数字: 2.2
输入一个数字: 5.6
输入一个数字: 0
输入一个数字: -2.4
输入一个数字: -3
Sum = 7.8

在上面的程序中,请注意以下行:

if (number < 0.0) {
    continue;
}

 这意味着当用户输入负数时,将跳过循环的当前迭代。下一个迭代就开始了。

Java continue和嵌套循环

如果是嵌套循环,则continue将跳过最内层循环的当前迭代。

在嵌套循环的情况下,continue语句跳过了最内层循环的当前迭代。
嵌套循环的continue语句的工作流程图

带标签的continue语句

 到目前为止,我们使用了未标记的continue语句。它用于终止最内层的循环和switch语句。然而,Java中还有另一种形式的continue语句,称为标记contine。

标记的continue语句用于跳过最外面的标记循环的当前迭代。
标有标签的continue语句在Java中的工作流程图

如上图所示,我们使用label标识符来指定外部循环。现在,请注意如何使用该continue语句(continue label;)。

 在这里,continue语句将跳过标记语句的当前迭代(即外部循环)。然后,程序的控制转到标记语句的下一次迭代(外循环)

示例3:标记为continue的语句

class LabeledContinue {
    public static void main(String[] args) {

        //外部for循环标记为label     
        first:
        for (int i = 1; i < 6; ++i) {
            for (int j = 1; j < 5; ++j) {
                if (i == 3 || j == 2)

                    //跳过标签的迭代(外部for循环)
                    continue first;
                System.out.println("i = " + i + "; j = " + j); 
            }
        } 
    }
}

输出

i = 1; j = 1
i = 2; j = 1
i = 4; j = 1
i = 5; j = 1

 在上面的示例中,使用带标签的continue语句跳过标记为first的循环的当前迭代。

if (i==3 || j==2)
    continue first;

 在这里,我们可以看到最外层的for循环被标记为first,

first:
for (int i = 1; i < 6; ++i) {..}

 因此,如果i的值为3或j的值为2,则跳过外部for循环的迭代。

注意:通常不建议使用带标签的continue,因为这会使代码难以理解。如果您处于必须使用标记为continue的情况下,请重构代码并尝试以不同的方式解决它,以使其更具可读性。