Skip to content

其他循环语句

while 循环

TIP

问题:一张纸的厚度是 0.01 毫米,对折多少次后能超过 1 米?

折纸是一种重复动作,我们可以使用循环语句来实现,关于循环语句,前面我们学习了 for 循环语句,在这个问题中,询问的是要折多少次,意味着如果使用 for 循环来解决这个问题有点不方便,for 循环你需要知道循环次数,如果硬要要使用 for 循环来完成,你需要结合 break 才能实现,像这种不知道循环次数的场景,我们使用 while 语句来实现会比较好

while 语句的结构

while(条件){
    循环体
}

看下面的例子:

java
public static void main(String[] args) {
    int i = 1;
    while (i < 5) {
        System.out.println(i);
        i++;
    }
}

上面代码中,while 循环打印出 4 个数字,执行步骤如下

第1步,初始化变量i,即 i=1
第2步,while循环,把i代入while的条件,即 1 < 5
第3步,while的条件为true,执行循环体,开始打印 System.out.println(1);
第4步,执行i++,i变为2

循环第2次
第5步,把i=2代入while条件,2 < 5
第6步,执行循环体,开始打印 System.out.println(2)
第7步,执行i++,i=3

以此类推...

当i=5的时候,while的条件5<5结果 false,结束循环

注意:while 循环一定要有结束的出口,不然就会写成死循环,如果 while 的条件用于为 true,你需要在循环体内手动结束,例如:

java
int i = 1;
while (true) {
    System.out.println(i);
    i++;
    if (i == 5) {
        break;
    }
}

折纸的问题

java
package com.nodeing.hello;

public class HelloWorld {
    public static void main(String[] args) {
        float i = 0.01f;
        // 统计次数
        int count = 0;
        while (i < 1000) {
            // 每折一次,厚度就是原来的2倍
            i *= 2;
            count++;
        }
        System.out.println(count);
    }
}

do...while 循环

do...while 循环和 while 循环是类似的,区别是循环体的执行次数,while 是先判断条件,再执行,而 do...while 是先执行了,再来判断

语法格式:

do {
    // 循环体
} while (条件);

举个例子:

java
int i = 0;
do {
    System.out.println(i);
} while (i < 0);

上面代码会先执行循环体,判断条件的时候,发现不满足,于是结束循环,最终循环体执行了一次,输出 0

如果换成 while 循环

java
int i = 0;
while (i < 0) {
    System.out.println(i);
}

while 循环,先判断条件是否成立,发现 i<0 并不成立,并不会执行循环体