java学习笔记day03-循环与分支语句

循环与分支

  • 分支语句switch语句

    • 格式:
    switch(表达式){
        case1:
            语句体1;
            break;
        case2:
            语句体2;
            break;
        ...
        default:
            语句体n+1;
            break;
    }
    
    • 说明:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7HnBeKY-1606354530901)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125094810067.png)]

      • 执行流程:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bNFrCqbY-1606354530905)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125094925902.png)]

      • case穿透:如果switch语句中,case省略了break语句,就会开始case穿透,当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行,直到看见break,或者将整体switch语句执行完毕,才会结束。

        • import java.util.Scanner;
          public class Day03{
          	public static void main(String[] args){
          		Scanner sc = new Scanner(System.in);
          		System.out.print("请输入:");
          		int week = sc.nextInt();
          		switch(week){
          			case 1:
          			case 2:
          			case 3:
          			case 4:
          			case 5:
          				System.out.println("工作日");
          				break;
          			case 6:
          			case 7:
          				System.out.println("休息日 ");
          				break;
          			default:
          				System.out.println("输入有误!");
          				break;
          		}
          	}
          }
          

示例:

import java.util.Scanner;
public class Day03{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入:");
		int week = sc.nextInt();
		switch(week){
			case 1:
				System.out.println("跑步");
				break;
			case 2:
				System.out.println("游泳");
				break;
			case 3:
				System.out.println("慢走");
				break;
			case 4:
				System.out.println("动感单车");
				break;
			case 5:
				System.out.println("爬山");
				break;
			case 6:
				System.out.println("跳绳");
				break;
			case 7:
				System.out.println("俯卧撑");
				break;
			default:
				System.out.println("输入有误!");
				break;
		}
	}
}

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

  • 循环语句for循环
    • 格式:for(初始化语句;条件判断语句;条件控制语句){循环体语句;}
    • 执行流程:1.执行初始化语句 2.执行条件判断语句,看其结果是true还是false,如果是false循环结束;如果是true继续执行,3.执行循环体语句 4.执行条件控制语句,回到2继续。

示例:

import java.util.Scanner;
public class Day03{
	public static void main(String[] args){
		for(int i=5;i<=10;i++){
			System.out.print(i+" ");
		}
		System.out.println("\n"+"-----------------");
		for(int i=10;i>=5;i--){
			System.out.print(i+" ");
		}
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IYaTZb09-1606354530912)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125105235651.png)]

案例水仙花数:

​ 需求:在控制台输出所有的"水仙花数",水仙花数是一个三位数,水仙花数的个位、十位、百位的数字的立方和等于原数。

public class Day03{
	public static void main(String[] args){
		for(int i=100;i<=999;i++){
			int ge = i%10;  //得出个位的数字
			int shi = i/10%10;  //得出十位的数字
			int bai = i/100%10;  //得出百位的数字
			int sum = ge*ge*ge + shi*shi*shi + bai*bai*bai;  //得出个位、十位、百位的数字立方和
			if(i==sum){
				System.out.print(sum+" ");
			}
		}
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fd3aj531-1606354530914)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125113912001.png)]

  • while循环语句
    • 格式:while(条件判断语句){循环体语句;条件控制语句;}
    • 执行流程:1.执行条件判断语句,看其结果是true还是false,若是false,循环结束;若是true,继续执行;2.执行循环体语句;3.执行条件控制语句;4.回到1继续。

案例:水仙花数进阶

public class Day03{
	public static void main(String[] args){
		int i=100;
		int count=0;
		while(i<=999){
			int ge = i%10;
			int shi = i/10%10;
			int bai = i/100%10;
			int sum = ge*ge*ge + shi*shi*shi + bai*bai*bai;
			if(i==sum){
				System.out.print(sum+" ");
				count++;
				if(count%2==0){
					System.out.println();
				}
			}
			i++;			
		}
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sHO3iIQB-1606354530915)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125143321310.png)]

案例:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

public class Day03{
	public static void main(String[] args){
		double paper=0.1;
		int count=0;
		int zf=8844430;
		while(paper<=zf){
			count++;
			paper *= 2;
		}
		System.out.print("纸张共折叠"+count+"次。");
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9g8Uhf4C-1606354530917)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125145610054.png)]

  • do…while循环

    • 格式:do{循环体语句;条件控制语句;}while(条件判断语句);

    • 执行流程:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o70pmvuG-1606354530918)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125150855691.png)]

    • 特点:无论循环条件是否满足,都至少会执行一次循环体。

  • 三种循环的区别:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BcoJxXFu-1606354530919)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125151313849.png)]

  • 跳转控制语句

    • continue:跳过某次循环,继续执行下一次循环;
    • break:终止循环。

案例:打印1~99层所有不带4的楼层;

public class Day03{
	public static void main(String[] args){
		int i=1;
		while(i<=99){
			int ge = i%10;
			int shi = i/10%10;
			i++;
			if(ge==4 | shi==4){
				continue;
			}
			System.out.print("第"+(i-1)+"层;");
		}		
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9u1L0p0O-1606354530921)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125154457983.png)]

  • Random:产生随机数
    1. 导包:import java.util.Random;
    2. 创建对象:Random r = new Random();
    3. 获取随机数:int number = r.nextInt(10); //获取数据的范围:[0,10) 包括0,不包括10;

示例:

import java.util.Random;
public class Day03{
    //输出22~88之间的随机数
	public static void main(String[] args){
		Random r = new Random();
		for(int i=1;i<=10;i++){
			int s = r.nextInt(67)+22;    //加的数由范围的左端决定,括号中的数由范围两端的差值决定
			System.out.println(s);
		}
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQBbkcrp-1606354530922)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125163729717.png)]

案例:猜数字;

import java.util.Random;
import java.util.Scanner;
public class Day03{
	public static void main(String[] args){
		Random r = new Random();
		Scanner sc = new Scanner(System.in);
		int randomNum = r.nextInt(100)+1;
		while(true){
			System.out.print("请输入你猜的数据(0~100之间):");
			int guess = sc.nextInt();
			if(guess>randomNum){
				System.out.println("猜大了!");
			}else if(guess<randomNum){
				System.out.println("猜小了!");
			}else{
				System.out.println("恭喜你猜对了!");
				break;
			}
		}
		System.out.println("欢迎下次使用!");
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tMeWGiKe-1606354530923)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125190959393.png)]

练习1

需求:某商场实行新的抽奖规则:如果会员号(四位数)的百位数字等于产生的随机数字(随机数为0~9),则该会员为幸运会员,且实现以下要求:从键盘上接收会员号,使用if-else选择结构实现幸运抽奖。

import java.util.Random;
import java.util.Scanner;
public class Day03{
	public static void main(String[] args){
		Random r = new Random();
		Scanner sc = new Scanner(System.in);
		int randomNum = r.nextInt(10);
		System.out.print("请输入你的会员号(四位):");
		int vc = sc.nextInt();
		int bai = vc/100%10;
		if(randomNum==bai){
			System.out.println("恭喜!您是幸运会员!");
			System.out.println("幸运数字为:"+randomNum);
		}else{
			System.out.println("抱歉!您不是幸运会员!");
			System.out.println("幸运数字为:"+randomNum);
		}
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZDGUJuJj-1606354530925)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125203330548.png)]

练习2

需求:在中国历法中有十二生肖年份,2019年是己亥猪年,请在控制台输出从1949年(包含)到2019年(包含)中所有是猪年的年份。

/*
	经分析得出2019减去指定年份所得结果是12的倍数,则该年份为猪年。
*/
public class Day03{
	public static void main(String[] args){
		for(int year=1949;year<=2019;year++){
			int pass = 2019-year;
			if(pass%12==0){
				System.out.print(year+" ");
			}
		}
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ppTvOvdT-1606354530926)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125204602305.png)]

练习3

需求:假如某店铺搞推销活动,对前100个进店消费的客户都下发一个号码牌(1–100号),如果用户手中的号码牌是8的倍数,那么该客户就可以以号码牌数字的价格购买电风扇一台(例如8号客户8元即可购买,16号客户16元即可购买…以此类推),如果该商场今天刚好来了100个客户,请问该店铺今天一共卖出了多少台打折的风扇,这些打折的风扇总共卖了多少钱?

/*
	经分析得出卖出的电风扇数就是1~100中是8的倍数的个数,卖的钱数就是这写8的倍数的数字之和
*/
public class Day03{
	public static void main(String[] args){
		int count = 0;
		int price = 0;
		for(int i=1;i<=100;i++){
			if(i%8==0){
				count++;
				price += i;
			}
		}
		System.out.println("店铺共卖出"+count+"台电风扇。");
		System.out.println("这些打折的风扇总共卖了"+price+"元。");
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CzOftbkT-1606354530927)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201125212731952.png)]

练习4

需求:循环录入某学生的5门课程的成绩并计算平均分。如果某分数录入为负,则停止录入并提示录入错误。

import java.util.Scanner;
public class Day03{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		double sum = 0;
		double score = 0;
		for(int i=1;i<=5;i++){
			System.out.print("请输入第"+i+"门课的成绩:");
			score = sc.nextDouble();
			if(score<0){
				System.out.println("成绩录入错误!");
				break;    //成绩录入错误!终止循环录入
			}
			sum += score;
		}
		if(score>=0){
			double avg = sum/5;   //判断成绩是否录入错误,如果录入错误则不执行求平均值和输出
			System.out.println("五门成绩的平均分为:"+avg);
		}
	}
}

结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AnZa58tL-1606354530928)(C:\Users\花花\AppData\Roaming\Typora\typora-user-images\image-20201126093050188.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值