Java循环的详解

Java循环的详解

一. for循环

含义:条件成立就重复执行

好处:减少了代码的冗余(减少重复性的代码)

语法结构:
			for(表达式1;表达式2;表达式3){
				...代码块...
			}

理解:
表达式1:初始化变量
表达式2:判断条件
表达式3:更新变量

执行流程:
1.初始化变量
2.判断条件:判断条件的结果必须是boolean
2.1 true - 执行代码块,并更新变量,重复第2个步骤
2.2 false- 跳出整个循环语句

for循环变形记:
循环中声明变量的作用域只能在循环内
再循环中i++和++i没有区别

			int i = 1;
			for(;i<=5;){
				System.out.println("变形记");
				//i++;
				++i;
			}
				System.out.println(i);

理解案例1:输出1-9的数字

			for(int i = 1;i<=9;i++){
				System.out.println(i);
			}

理解案例2:输出0-9的数字

			for(int i = 0;i<10;i++){
				System.out.println(i);
			}

理解案例3:输出1~9数字中的奇数

			//解决方案1
			for(int i = 1;i<10;i+=2){
				System.out.println(i);
			}
			//解决方案2
			for(int i = 1;i<10;i++){
				if(i%2!=0){
					System.out.println(i);
				}
			}

理解案例4:输出9~1的数字

            for(int i = 9;i>0;i--){
				System.out.println(i);
			}

总结 - 理解案例:i可以从1开始也可以从0开始,更新变量可以递增也可以递减

死循环:(应该避免的)

			for(;;){
				System.out.println("用良心做教育");
			}

伪死循环:(应该避免的)

			for(int i = 0;i>=0;i++){
				System.out.println("用良心做教育");
			}	

案例1:循环录入5次int类型的数字,输出总和

Scanner scan = new Scanner(System.in);
			int sum = 0;//总和
			for(int i = 1;i<=5;i++){
				System.out.println("请输入第" + i + "个数字:");
				int num = scan.nextInt();
				sum += num;//累加
			}
			System.out.println("总和为:" + sum);

案例2:循环录入麻生希同学的5门课成绩,计算平均分

		Scanner scan = new Scanner(System.in);
		double sum = 0;//总成绩
		for(int i = 1;i<=5;i++){
			System.out.println("请输入第" + i + "门成绩:");
			double score = scan.nextDouble();
			sum += score;//累加
		}
		System.out.println("平均分为:" + (sum/5));

案例3:循环录入5次int类型的数字,输出最大值

		Scanner scan = new Scanner(System.in);
	
		System.out.println("请输入第1个数字:");
		int max = scan.nextInt();//假设第一个输入的数字为最大值
		
		for(int i = 2;i<=5;i++){
			System.out.println("请输入第" + i + "个数字:");
			int num = scan.nextInt();
			if(max < num){
				max = num;
			}
		}
		
		System.out.println("最大值为:" + max);
		

1.1for循环嵌套for循环嵌套

需求:打印图形

  •   		*
      		**
      		***
      		****
      		*****
    
        for(int i = 0;i<5;i++){
       		 for(int j = 0;j<=i;j++){
       			 System.out.print("*");
		}
			System.out.println();
	}

			*****
			****
			***
			**
			*
			for(int i = 0;i<5;i++){
				for(int j = 5;j>i;j--){
					System.out.print("*");
					}
				System.out.println();
			}
			*****
			 ****
			  ***
			   **
				*
				for(int i = 0;i<5;i++){
					for(int k = 0;k<i;k++){
						System.out.print(" ");
			}
				for(int j = 5;j>i;j--){
					System.out.print("*");
				}
					System.out.println();
			}
			  *
			 ***
			*****
				for(int i = 0;i<3;i++){
					for(int k = 2;k>i;k--){
						System.out.print(" ");
			}
					for(int j = 0;j<i*2+1;j++){
						System.out.print("*");
				}
					System.out.println();
			}
			  *
			 * *
			*****
			for(int i = 0;i<3;i++){
					for(int k = 2;k>i;k--){
						System.out.print(" ");
					}
					for(int j = 0;j<i*2+1;j++){
						if(i==0 || i==2 || j==0 || j==i*2){
							System.out.print("*");
						}else{
							System.out.print(" ");
						}
						
					}
					System.out.println();
				}
			*****
			 ***
			  *		
				for(int i = 0;i<3;i++){
					for(int k = 0;k<i;k++){
						System.out.print(" ");
					}
					for(int j = 5;j>=i*2+1;j--){
						System.out.print("*");
					}
					System.out.println();
				}	
			*****
			 * *
			  *		
				for(int i = 0;i<3;i++){
					for(int k = 0;k<i;k++){
						System.out.print(" ");
					}
					for(int j = 5;j>=i*2+1;j--){
						if(i==0 || i==2 || j==5 || j==i*2+1){
							System.out.print("*");
						}else{
							System.out.print(" ");
						}
					}
					System.out.println();
				}	

需求:九九乘法表

第一种方法:

				for(int i = 1;i<=9;i++){
					for(int j = 1;j<=i;j++){
						System.out.print(j + "x" + i + "=" + (i*j) + "\t");
					}
					System.out.println();
				}

运行截图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uDvwDygH-1627044726752)(C:\Users\朱小武\AppData\Roaming\Typora\typora-user-images\image-20210723203127596.png)]

第二种方法:

			for(int i = 1;i<=9;i++){
					for(int k = 1;k<i;k++){
						System.out.print("\t");
					}
					for(int j = i;j<=9;j++){
						System.out.print(i + "x" + j + "=" + (i*j) + "\t");
					}
					System.out.println();
				}

运行截图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5WcNpOXJ-1627044726753)(C:\Users\朱小武\AppData\Roaming\Typora\typora-user-images\image-20210723202915076.png)]

二. while循环

//语法结构:
				while(表达式){
					...代码块...
				}

理解:
表达式的结果必须是boolean
true - 执行代码块
false- 跳出循环

//死循环:
				while(true){
					System.out.println("死循环");
				}

案例:我有个梦想,每月存3000,每年递增1000元,多少个月后存满20万

		int money = 3000;
		int allMoney = 0;
		int month = 0;
		while(allMoney < 200000){
			allMoney+=money;
			month++;
			if(month % 12 == 0){
				money+=1000;
			}
		}
		
		System.out.println(month + "个月以后存满20万  " + money);

总结:循环次数不确定2.1

2.1 do-while循环

//语法结构:
				do{
					...代码块...
				}while(表达式);

理解:
表达式的结果必须是boolean
true - 执行代码块
false- 跳出循环

执行顺序:
1.先执行一遍代码块
2.判断表达式
2.1 true - 执行代码块,再重复第2个步骤
2.2 false- 跳出循环

//死循环:
				do{
					System.out.println("死循环");
				}while(true);

案例:小明参加学校组织的歌咏比赛,
大赛在即,老师建议:先彩排一次,如果很令人满意,
以后就不用彩排了,否则每天都排,直到现场表现满意为止!


		Scanner scan = new Scanner(System.in);
		
		String str;
		do{
			System.out.println("许川:旋转、跳跃,我闭着眼~~~");
			System.out.println("许川:何老师,您满意了吗?");
			str = scan.next();
		}while(str.equals("不满意"));

总结:循环次数不确定

​ for vs while vs do-while
​ 语法结构的区别:
​ for(初始化变量;判断条件;更新变量){}
​ while(判断条件){}
​ do{}while(判断条件);
​ 循环共同点:判断条件的结果都是boolean值,true-循环 false-跳出循环
​ 执行顺序的区别:
​ for:先判断,再执行
​ while:先判断,再执行
​ do-while:先执行一遍,再判断

​ 应用场景的区别:
​ 循环次数确定:for
​ 循环次数不确定,先判断,再执行:while
​ 循环次数不确定,先执行一遍,再判断:do-while


>  总结:循环次数不确定
> 			
>
> ​		for vs while vs do-while
> ​		语法结构的区别:
> ​			for(初始化变量;判断条件;更新变量){}
> ​			while(判断条件){}
> ​			do{}while(判断条件);
> ​			循环共同点:判断条件的结果都是boolean值,true-循环 false-跳出循环
> ​		执行顺序的区别:
> ​			for:先判断,再执行
> ​			while:先判断,再执行
> ​			do-while:先执行一遍,再判断
> ​			
> ​		应用场景的区别:
> ​			循环次数确定:for
> ​			循环次数不确定,先判断,再执行:while
> ​			循环次数不确定,先执行一遍,再判断:do-while

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值