Java while 和 do...while 循环

在计算机编程中,循环用于重复执行一段代码。例如,如果您想显示一条消息 100 次,则可以使用循环。这只是一个简单的例子;通过循环您可以实现更多功能。

在上一篇教程中,您学习了 Java for 循环。在这里,您将学习 whiledo...while 循环。


Java while 循环

Java while 循环用于在满足特定条件时运行特定代码。while 循环的语法为:

while (testExpression) {
    // body of loop
}

这里,

  1. while 循环会计算括号 () 中的 **textExpression**。
  2. 如果 **textExpression** 计算结果为 true,则执行 while 循环内的代码。
  3. 再次计算 **textExpression**。
  4. 此过程将继续进行,直到 **textExpression** 为 false
  5. 当 **textExpression** 计算结果为 false 时,循环停止。

要了解有关条件的更多信息,请访问 Java 关系运算符逻辑运算符


while 循环的流程图

Flowchart of while loop in Java
Java while 循环的流程图

示例 1:显示从 1 到 5 的数字

// Program to display numbers from 1 to 5

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

    // declare variables
    int i = 1, n = 5;

    // while loop from 1 to 5
    while(i <= n) {
      System.out.println(i);
      i++;
    }
  }
}

输出

1
2
3
4
5

以下是此程序的运行方式。

迭代 变量 条件:i操作
第 1 次 i = 1
n = 5
true 打印 1
i 增加到 2
第 2 次 i = 2
n = 5
true 打印 2
i 增加到 3
第 3 次 i = 3
n = 5
true 打印 3
i 增加到 4
第 4 次 i = 4
n = 5
true 打印 4
i 增加到 5
第 5 个 i = 5
n = 5
true 打印 5
i 增加到 6
第 6 个 i = 6
n = 5
false 循环终止

示例 2:仅求正数的和

// Java program to find the sum of positive numbers
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
      
    int sum = 0;

    // create an object of Scanner class
    Scanner input = new Scanner(System.in);

    // take integer input from the user
    System.out.println("Enter a number");
    int number = input.nextInt();
	   
    // while loop continues 
    // until entered number is positive
    while (number >= 0) {
      // add only positive numbers
      sum += number;

      System.out.println("Enter a number");
      number = input.nextInt();
    }
	   
    System.out.println("Sum = " + sum);
    input.close();
  }
}

输出

Enter a number
25
Enter a number
9
Enter a number
5
Enter a number
-3
Sum = 39

在上面的程序中,我们使用了 Scanner 类从用户那里获取输入。这里,nextInt() 从用户那里获取整数输入。

while 循环会一直继续,直到用户输入负数。在每次迭代中,用户输入的数字都会被加到 sum 变量中。

当用户输入负数时,循环终止。最后,显示总和。


Java do...while 循环

do...while 循环与 while 循环相似。但是,do...while 循环的体会在测试表达式被检查之前执行一次。例如:

do {
    // body of loop
} while(textExpression);

这里,

  1. 循环体首先被执行。然后计算 **textExpression**。
  2. 如果 **textExpression** 计算结果为 true,则再次执行 do 语句内的循环体。
  3. 再次计算 **textExpression**。
  4. 如果 **textExpression** 计算结果为 true,则再次执行 do 语句内的循环体。
  5. 此过程将继续进行,直到 **textExpression** 计算结果为 false。然后循环停止。

do...while 循环的流程图

Flowchart of do...while loop in Java
Java do while 循环的流程图

让我们看看 do...while 循环的工作原理。

示例 3:显示从 1 到 5 的数字

// Java Program to display numbers from 1 to 5

import java.util.Scanner;

// Program to find the sum of natural numbers from 1 to 100.

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

    int i = 1, n = 5;

    // do...while loop from 1 to 5
    do {
      System.out.println(i);
      i++;
    } while(i <= n);
  }
}

输出

1
2
3
4
5

以下是此程序的运行方式。

迭代 变量 条件:i操作
i = 1
n = 5
未检查 打印 1
i 增加到 2
第 1 次 i = 2
n = 5
true 打印 2
i 增加到 3
第 2 次 i = 3
n = 5
true 打印 3
i 增加到 4
第 3 次 i = 4
n = 5
true 打印 4
i 增加到 5
第 4 次 i = 5
n = 5
true 打印 5
i 增加到 6
第 5 个 i = 6
n = 5
false 循环终止

示例 4:正数的总和

// Java program to find the sum of positive numbers
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
      
    int sum = 0;
    int number = 0;

    // create an object of Scanner class
    Scanner input = new Scanner(System.in);
	   
    // do...while loop continues 
    // until entered number is positive
    do {
      // add only positive numbers
      sum += number;
      System.out.println("Enter a number");
      number = input.nextInt();
    } while(number >= 0); 
	   
    System.out.println("Sum = " + sum);
    input.close();
  }
}

输出 1

Enter a number
25
Enter a number
9
Enter a number
5
Enter a number
-3
Sum = 39

在这里,用户输入一个正数,该数字被加到 sum 变量中。此过程将一直继续,直到输入负数。当输入负数时,循环终止,并显示总和,而不添加负数。

输出 2

Enter a number
-8
Sum is 0

在这里,用户输入一个负数。测试条件将为 false,但循环内的代码会执行一次。


无限 while 循环

如果循环的**条件**始终为 true,则循环将无限次运行(直到内存用尽)。例如:

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

这是无限 do...while 循环的一个示例。

// infinite do...while loop
int count = 1;
do {
   // body of loop
} while(count == 1)

在上面的程序中,**textExpression** 始终为 true。因此,循环体将无限次运行。


for 和 while 循环

当迭代次数已知时,使用 for 循环。例如:

for (int i = 1; i <=5; ++i) {
   // body of loop
}

whiledo...while 循环通常在迭代次数未知时使用。例如:

while (condition) {
    // body of loop
}

另请阅读

在我们结束之前,让我们来测试一下您对 Java while 和 do...while 循环的掌握程度!您能解决以下挑战吗?

挑战

编写一个函数来计算一个数字的阶乘。

  • 返回输入 num 的阶乘。
  • 提示:非负整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。它表示为 n!
  • 例如,如果 num = 5,则输出应为 120
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战