Appearance
其他循环语句
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 并不成立,并不会执行循环体