循环

循环

1.什么是循环

三要素:起点,循环体,截止

2.怎么去循环

image

3.java中的循环语法

a.while循环

image

实现:

image

image

image

image

b.do-while循环

image

image

while循环和do-while循环的区别和联系:
  1. while:当判断条件不满足的时候,一次也不执行;while循环的执行次数是0-n;

image

  1. do-while:当判断条件不满足时,至少执行一次;do-while的循环范围是1-n

image

c.for循环(foreach)

image

image

执行顺序

image

image

注意的地方

image

image

image

image

image

image

d.循环嵌套

内层循环循环一轮,外层循环循环一次

简易三层之内

一个固定代码:

image

时分秒计时:

image

image

e.两个关键字

  1. 跳过本次循环:continue,跳过本次循环,后置内容不再执行,前置内容仍然会执行。

image

  1. 跳出(终止)循环:break,终止循环,后续的所有次数的循环都不再执行。在调用break之前的依然正常执行,在调用break之后的,以及后续的所有轮,都结束。

image

画星星

正方形

思路:

  1. 先画一行,这一行是依次打印5个星星
  2. 一行打印完毕之后要换行
  3. 准备外层循环,意味着打印多少行

image

image

直角三角形

思路:

  1. 和正方形一样,同样是分为一行多少个星星,总共若干行
  2. 内层的循环上限和外层的循环当前次数有关

image

或者:

image

image

倒直角三角形

思路:

  1. 在正直角的基础上,内层是倒序循环/也可以是增序,因为是数量越来越少
  2. 其他的和正直角一样

image

或者:

image

image

image

反直角三角形

思路:

  1. 和正直角基本一致
  2. 每一行依然是五个符号,只不过是由空格和星星组合构成,是空格加星星的总和
  3. 最后一行,可以看出是0个空格+5个星星

image

或者:

image

image

杨辉三角

思路:

  1. 在正直角三角形的基础上
  2. 每一行的公式为:2a+1

image

或者:

image

image

一个小练习:

做一个简化版的体育彩票

规则:3+1,前3位,不看顺序,中1个10元,中2个100元,中3个1000元,最后一个看顺序,全中100000元

package com.qf.circulate;

import java.util.Random;
import java.util.Scanner;

public class BodyColor {

	public static void main(String[] args) {
		//模拟一个体彩
		//3+1
		//生成随机数:new Random().nextInt()
		Scanner scan = new Scanner(System.in);
		
		//生成奖池
		while(true) {
			System.out.println("欢迎使用割韭菜彩票系统!");			
			//生成第一个
			int num1 = new Random().nextInt(100);
			
			//生成第二个
			int num2  = 0;
			while(true) {
				num2 = new Random().nextInt(100);
				//判断生成的第一个值和第二个是否相同,若不相同则跳出此循环
				if(num2 != num1) {
					break;
				}
			}
			
			//生成第三个
			int num3 = 0;
			while(true) {
				num3 = new Random().nextInt(100);
				//判断生成的第三个值和第一、二个是否相同,若不相同则跳出此循环
				if(num3 != num1
						&&num3 !=num2) {
					break;
				}
			}
			//生成第四个
			int num4 = 0;
			while(true) {
				num4 = new Random().nextInt(100);
				//判断生成的第四个值和第一、二、三个是否相同,若不相同则跳出此循环
				if(num4 != num1
						&&num4 !=num2
						  &&num4 != num3) {
					break;
				}
			}
			System.out.println("奖池:"+num1+"  "+num2+"  "+num3+"  "+num4);
			//break;
			
			
			
			//选号
			System.out.print("请选号(一):");
			int choNum1 = scan.nextInt();
			
			//选号二
			int choNum2 = 0;
			while(true) {
				System.out.print("请选号(二):");
				choNum2 = scan.nextInt();
				if(choNum2 != choNum1) {
					break;
				}
			}
			
			//选号三
			int choNum3 = 0;
			while(true) {
				System.out.print("请选号(三):");
				choNum3 = scan.nextInt();
				if(choNum3 != choNum1
						&&choNum3 != choNum2) {
					break;
				}
			}
			
			//选号四
			int choNum4 = 0;
			while(true) {
				System.out.print("请选号(四):");
				choNum4 = scan.nextInt();
				if(choNum4 != choNum1
						&&choNum4 != choNum2
							&&choNum4 !=choNum3) {
					break;
				}
			}
			
			
			System.out.println("选号:"+choNum1+"  "+choNum2+"  "+choNum3+"  "+choNum4);
			//兑奖
			int count = 0;
			boolean flag = true;
				if(choNum1 == num1) {
					count++;
					if(choNum2 == num2) {
						count++;
						if(choNum3 == num3) {
							count++;
							if(choNum4 == num4) {
								count++;
							}else {
								flag = false;
							}
						}else {
							flag = false;
						}
					}else {
						
						flag = false;
					}
				}else {
					flag = false;
					}
				
			
			
			//中奖信息
			switch(count){
			case 1:
				System.out.println("恭喜中奖10元!");
				break;
			case 2:
				System.out.println("恭喜中奖100元!");
				break;
			case 3:
				System.out.println("恭喜中奖1000元!");
				break;
			case 4:
				System.out.println("恭喜中奖100000元!");
				break;
			}
		
		}
		
	}

}

image

改造:

package com.qf.circulate;

import java.util.Random;
import java.util.Scanner;

public class BodyColor {

	public static void main(String[] args) {
		//模拟一个体彩
		//3+1
		//生成随机数:new Random().nextInt()
		
		//生成奖池
		boolean flag1 = true;
		while(flag1) {
			Scanner scan = new Scanner(System.in);
			System.out.println("请选择:输入 1.开始游戏\t输入2.退出游戏");
			int begin = scan.nextInt();
			switch(begin) {
			case 1:
				System.out.println("欢迎使用割韭菜彩票系统!");			
				//生成第一个
				int num1 = new Random().nextInt(100);
				
				//生成第二个
				int num2  = 0;
				while(true) {
					num2 = new Random().nextInt(100);
					//判断生成的第一个值和第二个是否相同,若不相同则跳出此循环
					if(num2 != num1) {
						break;
					}
				}
				
				//生成第三个
				int num3 = 0;
				while(true) {
					num3 = new Random().nextInt(100);
					//判断生成的第三个值和第一、二个是否相同,若不相同则跳出此循环
					if(num3 != num1
							&&num3 !=num2) {
						break;
					}
				}
				//生成第四个
				int num4 = 0;
				while(true) {
					num4 = new Random().nextInt(100);
					//判断生成的第四个值和第一、二、三个是否相同,若不相同则跳出此循环
					if(num4 != num1
							&&num4 !=num2
							  &&num4 != num3) {
						break;
					}
				}
				//System.out.println("奖池:"+num1+"  "+num2+"  "+num3+"  "+num4);
				//break;
				
				
				
				//选号
				System.out.print("请选号(一):");
				int choNum1 = scan.nextInt();
				
				//选号二
				int choNum2 = 0;
				while(true) {
					System.out.print("请选号(二):");
					choNum2 = scan.nextInt();
					if(choNum2 != choNum1) {
						break;
					}
				}
				
				//选号三
				int choNum3 = 0;
				while(true) {
					System.out.print("请选号(三):");
					choNum3 = scan.nextInt();
					if(choNum3 != choNum1
							&&choNum3 != choNum2) {
						break;
					}
				}
				
				//选号四
				int choNum4 = 0;
				while(true) {
					System.out.print("请选号(四):");
					choNum4 = scan.nextInt();
					if(choNum4 != choNum1
							&&choNum4 != choNum2
								&&choNum4 !=choNum3) {
						break;
					}
				}
				
				
				System.out.println("选号:"+choNum1+"  "+choNum2+"  "+choNum3+"  "+choNum4);
				//兑奖
				int count = 0;
				boolean flag = true;
					if(choNum1 == num1) {
						count++;
						if(choNum2 == num2) {
							count++;
							if(choNum3 == num3) {
								count++;
								if(choNum4 == num4) {
									count++;
								}else {
									flag = false;
								}
							}else {
								flag = false;
							}
						}else {
							
							flag = false;
						}
					}else {
						
						flag = false;
						}
					
				
				
				//中奖信息
				switch(count){
				case 1:
					System.out.println("恭喜中奖10元!");
					break;
				case 2:
					System.out.println("恭喜中奖100元!");
					break;
				case 3:
					System.out.println("恭喜中奖1000元!");
					break;
				case 4:
					System.out.println("恭喜中奖100000元!");
					break;
					default:
						System.out.println("没中奖,欢迎下次再来!");
						break;
				}
				
				break;
				default:
					System.out.println("可恶这个韭菜跑了!!!>_<");
					flag1 = false;
					break;
			}
			
		}
		
	}

}

image

作业:

  1. 请打印99乘法表(必做)
package com.qf.circulate;

public class MultiplicationTable {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 1;
		while(i<10) {
			int j = 1;
			while(j<=i) {
				System.out.print(j+"*"+i+"="+i*j+"\t");
				j++;
			}
			System.out.println();
			i++;
		}
	}
}

image

  1. 打印一棵圣诞树(选做)
package com.qf.circulate;

public class ChristmasTree {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 0;
		while(i<4) {
			int n = 30;
			while(n>i) {
				System.out.print(" ");
				n--;
			}
			int j = 0;
			while(j<=i*2) {
				System.out.print("*");
				j++;
			}
			System.out.println();
			i++;
		}
		int a1 = 1;
		while(a1<6) {
			int n1 = 30;
			while(n1>a1*2-1) {
				System.out.print(" ");
				n1--;
			}
			int b1 = 1;
			while(b1<a1*4) {
				System.out.print("*");
				b1++;
			}
			System.out.println();
			a1++;
		}
		
		
		int a2 = 1;
		while(a2<7) {
			int n2 = 30;
			while(n2>a2*2) {
				System.out.print(" ");
				n2--;
			}
			int b2 = 0;
			while(b2<a2*4) {
				System.out.print("*");
				b2++;
			}
			System.out.println();
			a2++;
		}

		int a3  = 1;
		while(a3<8) {
			int n3 = 26;
			while(n3>0) {
				System.out.print(" ");
				n3--;
			}
			int j3 = 8;
			while(j3>0) {
				System.out.print("*");
				j3--;
				
			}
			System.out.println();
			a3++;
		}
		
	}

}

image

  1. 思考题:打印1000以内的水仙花数(一个单循环)
package com.qf.circulate;

public class Daffodil {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 1000;
		System.out.print("一千以内的水仙花数是:");
		while(i>1) {
			int ind = i%10;
			int ten = i/10%10;
			int hub = i/100%10;
			int sum = ind*ind*ind+ten*ten*ten+hub*hub*hub;
			if(i == sum) {
				System.out.print(sum+" ");
			}
			
			i--;
		}
	}

}


image

posted @ 2023-03-07 19:12  DFshmily  阅读(49)  评论(0编辑  收藏  举报