概述
一、while循环格式与执行流程
格式:
初始化语句;
while (循环条件) {
循环体语句(被重复执行的代码);
迭代语句;
}
示例:
int i = 0;
while (i < 3) {
System.out.println("Hello World");
i++;
}
package com.app.loop;
public class WhileDemo5 {
public static void main(String[] args) {
// 目标:学会使用while循环,并理解它的流程
int i = 0; // 初始化语句:与for循环同理
while(i < 3) { // 循环条件是 i < 3,循环到i >= 3时,将结束循环
System.out.println("Hello World"); // 循环体语句:被重复执行的代码
i++; // 迭代语句,循环结构不可或缺的,如果忘记写迭代语句了,将会进入死循环现象
}
System.out.println("执行次数: " + i);
/*
while执行流程详解:
其实,while的执行流程与for可以说很相似的
第一次循环,i=0,因此 i<3,符合,执行循环体语句,i++,记录1次,此时 i+1=0+1
第二次循环,i=1,因此 i<3,符合,执行循环体语句,i++,记录1次,此时 i+1=1+1
第三次循环,i=2,因此 i<3,符合,执行循环体语句,i++,记录1次,此时 i+1=2+1
第四次循环,i=3,因此 i=3,不符合 i<3,判断为false,结束循环
最终总共执行了三次循环体语句
*/
}
}
输出结果:
Hello World
Hello World
Hello World
执行次数: 3
执行流程
小结
1、while循环的格式,执行流程是怎么样的?
2、什么时候用for循环,什么时候用while循环?
- 功能上是完全一样的,for能解决的while也能解决,反之亦然。
- 使用规范是:知道循环几次就用for;不知道循环几次建议使用while。
二、while循环案例:珠穆朗玛峰(世界最高峰8848.86米)
-
需求:
- 世界最高峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸,它的厚度是0.1。请问折多少次,可以折成珠穆朗玛峰的高度?
-
思路:
- 这种不清楚要循环多少次的情况可以选择while实现。
-
分析步骤:
-
1、定义变量存储珠穆朗玛峰的高度、纸张的厚度
double peakHeight = 8848860; // 山峰高度 double paperThickness = 0.1; // 纸张厚度
-
2、使用while循环,循环条件是(纸张厚度 < 山峰高度),内部控制纸张折叠,每折叠一次,纸张厚度为原来的两倍,循环外定义一个计数器变量,用于保存每循环一次纸张折叠让计数器变量 +1
// 计数器变量,用于保存每循环一次纸张折叠让该变量 +1 int count = 0; while (paperThickness < peakHeight) { paperThickness *= 2; // 等价于:paperThickness = paperThickness * 2; count++; // 每循环一次纸张折叠计数 +1 }
-
3、当纸张折叠厚度 大于 珠穆朗玛峰的高度时,将折叠次数输出在控制台
System.out.println("纸张折叠 " + count + " 次后n纸张厚度为:" + paperThickness);
package com.app.loop; public class WhileTest6 { public static void main(String[] args) { // 目标:通过while案例:珠穆朗玛峰,更深入了解什么业务下适合用while循环 /* while循环案例:珠穆朗玛峰(世界最高峰8848.86米) 一、需求:世界最高峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸, 它的厚度是0.1。请问折多少次,可以折成珠穆朗玛峰的高度? 二、思路:这种不清楚要循环多少次的情况可以选择while实现。 三、分析步骤: (1) 定义变量存储珠穆朗玛峰的高度、纸张的厚度 (2) 使用while循环,循环条件是(纸张厚度 < 山峰高度),内部控制纸张折叠,每折叠一次,纸张厚度为原来的两倍,计数+1 (3) 循环外定义一个计数器变量,用于保存每循环一次纸张折叠让计数器变量 +1 (4) 当纸张折叠厚度 大于 珠穆朗玛峰的高度时,将折叠次数输出在控制台 */ // (1) 定义变量存储珠穆朗玛峰的高度、纸张的厚度 double peakHeight = 8848860; // 山峰高度 double paperThickness = 0.1; // 纸张厚度 // (3) while循环外定义一个计数器变量,用于保存每循环一次纸张折叠让计数器变量 +1 int count = 0; // (2) 使用while循环,循环条件是(纸张厚度 < 山峰高度) while (paperThickness < peakHeight) { // 内部控制纸张折叠,每折叠一次,纸张厚度为原来的两倍 paperThickness *= 2; // 等价于:paperThickness = paperThickness * 2; ————> paperThickness = 0.1 * 2; // 计数+1 count++; } // (4) 当纸张折叠厚度 大于 珠穆朗玛峰的高度时,将折叠次数输出在控制台 System.out.println("纸张折叠 " + count + " 次后n纸张厚度为:" + paperThickness); } }
输出结果: 纸张折叠 27 次后 纸张厚度为:1.34217728E7
- 可以看到纸张的最终厚度为 1.34217728E7,看小数点后有多少个数就可以知道纸张厚度有没有超过珠穆朗玛峰的高度了。很显然,已经超过了!
-
while案例总结:珠穆朗玛峰
1、怎么解决这个案例?
- 1、定义变量存储山峰高度、纸张厚度
- 2、使用while循环,循环条件是:纸张厚度 < 山峰高度,内部控制纸张循环折叠,每折叠一次,纸张的厚度为原来的2倍,计数+1次
- 3、循环外定义计数器变量,用于记录循环每折叠一次纸张,计数+1
- 4、当纸张的厚度折叠 到 超过珠穆朗玛峰的高度 时,输出折叠次数、纸张最终厚度到控制台
2、for和while使用总结
-
其实while能做的for都能实现
-
比如:
// 计数器变量,用于保存每循环一次纸张折叠让该变量 +1 int count = 0; for ( ;paperThickness < peakHeight; ) { paperThickness *= 2; // 等价于:paperThickness = paperThickness * 2; count++; // 每循环一次纸张折叠计数 +1 }
-
-
但是如果一开始不知道循环次数的情况下,建议使用while循环解决更专业
-
比如:
// 计数器变量,用于保存每循环一次纸张折叠让该变量 +1 int count = 0; while (paperThickness < peakHeight) { paperThickness *= 2; // 等价于:paperThickness = paperThickness * 2; count++; // 每循环一次纸张折叠计数 +1 }
-
最后
以上就是悦耳大船为你收集整理的23-Java的循环结构:while循环的全部内容,希望文章能够帮你解决23-Java的循环结构:while循环所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复