一.解决思路, 定义变量存储珠穆朗玛峰的高度(peakHeight)、纸张的高度(paperThickness)。
使用while循环,循环条件是(纸张厚度<山峰高度),内部控制纸张折叠,每折叠一次,纸张厚度为原来两倍,循环外定义计数变量,每折叠依次让该变量+1。
(1)珠穆朗玛峰的高度=8848860
(2)纸张=0.1
二、执行代码while循环
public static void main(String[] args) {
double peakHeight=8848860;//山峰
double paperThickness=0.1;//纸张
int count =0;
//如果纸张的厚度小于山峰继折叠,直到高于山峰厚度退出
while (paperThickness< peakHeight){
//纸张每折叠厚度是他的两倍
paperThickness=paperThickness*2;
count++;//折叠的次数
}
System.out.println("纸张折叠次数"+count);
System.out.println("纸张的厚度"+paperThickness);
}
结果:
我们看到的结果已经大于珠穆朗玛峰了,所以要看折叠26次的高度,这里的结果是有效位是8位,
E呢是10的7次方,打开计算器输入纸张折叠的厚度除于2就是26次的高度。
我们再说说为什么不用for循环
(1)使用规范是:知道循环几次:使用for;
(2)不知道循环几次建议使用:while,不知道循环多少次的建议使用while,
显得更专业点。
我们也用for循环执行一次
public static void main(String[] args) {
double peakHeight=8848860;//山峰
double paperThickness=0.1;//纸张
int count =0;
//如果纸张的厚度小于山峰继折叠,直到高于山峰厚度退出
for (;paperThickness< peakHeight;){
//纸张每折叠厚度是他的两倍
paperThickness=paperThickness*2;
count++;//折叠的次数
}
System.out.println("纸张折叠次数"+count);
System.out.println("纸张的厚度"+paperThickness);
}