欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

for循环与while循环的一点小区别

程序员文章站 2022-07-13 23:30:14
...

前言

今天做练习发现for循环和while循环的一点区别,直接上代码

需求

有一个容量为10L的空水桶。水桶的上面开始往里灌水,同时下面开始往出流水。第一分钟灌水的速度是1L/min,第二分钟灌水的速度是2L/min,第三分钟灌水的速度是3L/min,以此类推。而流水的速度固定是3L/min。那么几分钟之后,水桶里能保持灌满水的状态?
答案:7分钟。

代码实现

  1. for循环
public class T7{
	public static void main(String[] args){
		int vol = 0;
		int i ;
		for(i=1;vol<10;i++){
			vol = (i<=3)?0:(vol+i-3);		
		}
		System.out.println((i-1)+"分钟灌满");
	}
}

因为第7分钟灌满后,虽然没有继续执行循环体,但是i又加了1,所以输出的时候实际上是i-1分钟。

  1. while循环
public class T6{
	public static void main(String[] args){
		int vol = 0;
		int i = 1 ;
		// while循环实现
		while(vol<10){//vol等于10时不执行语句体,所以此处为<
			//注意一下两个语句的顺序
			i++;
            vol += i - 3;
			
			//或者
			//vol += i - 3;
			//i++;
			//输出时i-1分钟灌满
			
            if(vol < 0){
                vol = 0;
			}
		}System.out.println(i+"分钟灌满");
	}	
}

先执行i++,则i分钟灌满。后执行i++,则i-1分钟灌满。

总结

来看一下for循环和while循环的格式:
for:

    for(初始化语句;条件判断语句;条件控制语句) {
		循环体语句;
	}

执行流程:
    1:执行初始化语句
	2:执行条件判断语句,看其结果是true还是false
        如果是false,循环结束
        如果是true,继续执行
	3:执行循环体语句
	4:执行条件控制语句
	5:回到2继续

while

	初始化语句;
	while(条件判断语句) {   
		循环体语句;
		条件控制语句;
	}

执行流程:
    1:执行初始化语句
	2:执行条件判断语句,看其结果是true还是false
        如果是false,循环结束
        如果是true,继续执行
	3:执行循环体语句
	4:执行条件控制语句
	5:回到2继续

结论:
for循环中的执行顺序是一定的,也就是先执行循环体语句后执行条件控制语句。
while循环中的执行顺序确实和代码顺序有关,循环体语句和条件控制语句哪个在前就先执行哪个。
本案例的关键则是,vol赋值语句与vol判断语句之间不能有i++,否则输出结果错误。