Java while 和 do...while循环

循环语句除了for循环之外还有while和do..while,接下来我们先来看一下while循环,首先学习while循环的语法结构。

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

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

Java while循环

while语句是Java最基本的循环语句,是一种先判断的循环结构,可以在一定条件下重复执行一段代码。该语句需要判断一个测试条件,如果该条件为真,则执行循环语句(循环语句可以是一条或多条),否则跳出循环。

语法格式:

while (testExpression) {
    // while循环体中的代码
}

while循环如何工作?

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

  • while循环内的语句将被执行。

  • 然后,再次评估测试表达式(testExpression)。

    这个过程一直进行到测试表达式被评估为false为止。

  • 如果测试表达式的计算结果为false,则while循环被终止。

示例:while循环

//程序打印行10次
class Loop {
    public static void main(String[] args) {
      
        int i = 1;
       
        while (i <= 10) {
            System.out.println("Line " + i);
            ++i;
        }
    }
}

输出:

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

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

最初,此处i的值为1。因此,测试表达式(testExpression)的计算结果为true。因此,将执行while循环内的print语句。

请注意while循环内的语句

 ++i;

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

要了解有关测试表达式及其评估方式的更多信息,请访问Java 关系运算符和Java 逻辑运算符。

示例:Java while循环

//编程以查找1到100之间的自然数之和。
class AssignmentOperator {
    public static void main(String[] args) {
      
        int sum = 0, i = 100;
       
        while (i != 0) {
            sum += i;     // 等同于 sum = sum + i;
            --i;
        }
       
        System.out.println("Sum = " + sum);
    }
}

输出:

Sum = 5050

在这里,我们有两个名为sum,i的变量,其初始值分别为0和100。

在while循环的每次迭代中,

  • 为sum变量分配值:sum + i

  • i的值减少1

循环一直进行到的值i等于0 为止。

1st 重复: i = 100, sum = 0+100 = 100, 同时 --i = 99
2nd 重复: i = 99, sum = 100+99 = 199, 同时 --i = 98
3rd 重复: i = 98, sum = 199+98 = 297, 同时 --i = 97
... .. ...
... .. ...
99th 重复: i = 2, sum = 5047+2 = 5049, 同时 --i = 1
100th 重复: i = 1, sum = 5049+1 = 5050, 同时 --i = 0

Java do... while循环

如果while循环一开始条件表达式就是假的,那么循环体就根本不被执行。然而,有时需要在开始时条件表达式即使是假的情况下,while循环至少也要执行一次。

语法格式:

do {
   // do...while循环体内的代码
} while (testExpression);

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

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

如果测试表达式被计算为true,则执行循环体中的代码,并再次计算测试表达式。这个过程一直进行下去,直到测试表达式被计算为false为止。

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

示例:do ... while循环

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

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

import java.util.Scanner;

class Sum {
    public static void main(String[] args) {
       
        Double number, sum = 0.0;
        //创建一个Scanner类的对象
        Scanner input = new Scanner(System.in);

        do {

            //接受用户的输入
            System.out.print("输入一个数字: ");
            number = input.nextDouble();
            sum += number;
        } while (number != 0.0);  //测试表达
       
        System.out.println("Sum = " + sum);
    }
}

输出:

输入一个数字: 2.5
输入一个数字: 23.3
输入一个数字: -4.2
输入一个数字: 3.4
输入一个数字: 0
Sum = 25.0

无限循环

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

这就是所谓的无限while和do...while循环。例如,

//无限while循环
while (true) {
   //while循环主体
}

再举一个实例

//无限while循环
int i = 100;
while (i == 100) {
   System.out.print("Hey!");
}

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

实际上while循环可以看做是for循环的另一种变形写法,本质上是一样的,执行效率上也是一样的,硬要说它们有什么不同的话,首先while循环语法结构比for更简单,for循环的计数器比while更清楚一些,另外for循环的计数器对应的变量可以在for循环结束之后就释放掉,但是while循环的计数器对应的变量声明在while循环外面,扩大了该变量的作用域。总之,不管是for还是while,大家都必须掌握,因为这两个循环使用最多。

编程笔记 » Java while 和 do...while循环