原文: https://www.programiz.com/java-programming/do-while-loop

在本教程中,我们将借助示例学习如何在 Java 中使用whiledo while循环,并且还将学习循环在计算机编程中的工作方式

在计算机编程中,循环用于重复特定的代码块,直到满足特定条件(测试表达式为false)为止。 例如,

想象一下,我们需要在屏幕上打印一个句子 50 次。 好吧,我们可以通过使用print语句 50 次(不使用循环)来做到这一点。 您需要打印一百万次句子怎么样? 您需要使用循环。 使用循环,我们可以只编写一次print语句,然后运行任意次数。

这只是一个简单的示例,显示了循环在计算机编程中的重要性。 Java 中有 3 种类型的循环:循环while循环和do-while循环。


Java while循环

Java 中while循环的语法为:

  1. while (testExpression) {
  2. // codes inside the body of while loop
  3. }

while循环如何工作?

在以上语法中,括号内的测试表达式是布尔表达式。 如果测试表达式的计算结果为true

  • while循环内的语句被执行。
  • 然后,再次求值测试表达式。

该过程一直进行到测试表达式被求值为false为止。 如果将测试表达式求值为false

  • while循环终止。

While循环流程图

Java `while`和`do...while`循环 - 图1

While循环的原理


示例 1:while循环

  1. // Program to print line 10 times
  2. class Loop {
  3. public static void main(String[] args) {
  4. int i = 1;
  5. while (i <= 10) {
  6. System.out.println("Line " + i);
  7. ++i;
  8. }
  9. }
  10. }

输出

  1. Line 1
  2. Line 2
  3. Line 3
  4. Line 4
  5. Line 5
  6. Line 6
  7. Line 7
  8. Line 8
  9. Line 9
  10. Line 10

在上面的示例中,我们有一个测试表达式(i <= 10)。 它检查i的值是否小于或等于 10。

在这里,最初i的值为 1。因此,测试表达式首次求值为true。 因此,将执行while循环内的print语句。

while循环中注意以下语句

  1. ++i;

该语句在每次迭代中将i的值增加 1。 经过 10 次迭代后,i的值为 11。然后,测试表达式(i <= 10)求值为falsewhile循环终止。

要了解有关测试表达式及其求值方式的更多信息,请访问 Java Relational OperatorJava Logical Operator


示例 2:Java while循环

  1. // Program to find the sum of natural numbers from 1 to 100.
  2. class AssignmentOperator {
  3. public static void main(String[] args) {
  4. int sum = 0, i = 100;
  5. while (i != 0) {
  6. sum += i; // sum = sum + i;
  7. --i;
  8. }
  9. System.out.println("Sum = " + sum);
  10. }
  11. }

输出

  1. Sum = 5050

这里,我们有两个变量sumi,其初始值分别为 0 和 100。

while循环的每次迭代中,

  • sum变量被分配了值:sum + i
  • i的值减少 1

循环继续进行,直到i的值等于 0。为实现更好的可视化效果,

  1. 1st iteration: i = 100, sum = 0+100 = 100, and --i = 99
  2. 2nd iteration: i = 99, sum = 100+99 = 199, and --i = 98
  3. 3rd iteration: i = 98, sum = 199+98 = 297, and --i = 97
  4. ... .. ...
  5. ... .. ...
  6. 99th iteration: i = 2, sum = 5047+2 = 5049, and --i = 1
  7. 100th iteration: i = 1, sum = 5049+1 = 5050, and --i = 0

Java do...while循环

do...while循环类似于while循环,但有一个按键差异。 在检查测试表达式之前,do...while循环的主体将执行一次。

这是do...while循环的语法。

do {
   // codes inside body of do while loop
} while (testExpression);

do...while循环如何工作?

do...while循环的主体执行一次(在检查测试表达式之前)。 只有这样,才检查测试表达式。

如果将测试表达式求值为true,则执行循环体内的代码,然后再次求值测试表达式。 这个过程一直进行到测试表达式被求值为false为止。

当测试表达式为false时,do..while循环终止。


do...while循环流程图

Java `while`和`do...while`循环 - 图2

do...while循环的原理


示例 3:do...while循环

下面的程序计算用户输入的数字总和,直到用户输入 0。

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

import java.util.Scanner;

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

        Double number, sum = 0.0;
        // creates an object of Scanner class
        Scanner input = new Scanner(System.in);

        do {

            // takes input from the user
            System.out.print("Enter a number: ");
            number = input.nextDouble();
            sum += number;
        } while (number != 0.0);  // test expression

        System.out.println("Sum = " + sum);
    }
}

输出

Enter a number: 2.5
Enter a number: 23.3
Enter a number: -4.2
Enter a number: 3.4
Enter a number: 0
Sum = 25.0

无限while循环

在使用循环时,我们应始终小心。 这是因为,如果我们错误地设置了测试表达式以使其永远不会为假,则whiledo...while循环将永远运行。

这称为无限whiledo...while循环。 例如,

// Infinite while loop
while (true) {
   // body of while loop
}

再举一个例子

// Infinite while loop
int i = 100;
while (i == 100) {
   System.out.print("Hey!");
}

无限do...while循环的工作方式与while循环类似。