Java流程控制(1)if-else、switch-case

本文详细介绍了Java中的流程控制结构,重点讲解了分支结构的if-else和switch-case的使用。通过四个实际案例,阐述了它们在条件判断中的应用,包括打印中间值、数值排序、成绩判断和日期计算。强调了合理使用逻辑运算符和避免多重嵌套以提高代码可读性,并探讨了switch case的执行特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、流程控制的三种结构

二、分支结构:if else

1.案例(1):使用if else 和 && 短路与逻辑运算符,打印三个数的中间值。

2.案例(2):使用Scanner类,输入3个数值,并按从大到小的顺序打印出来。

三、分支结构:switch case

1.案例(3):输入成绩,使用switch case 判断成绩是否及格

2.案例(4):利用switch case 不遇到break可以一直执行到结束的特性,打印输入的年月日是当年的第几天。


一、流程控制的三种结构

1.顺序结构

当执行完一条语句后,继续执行下一条语句,按顺序执行。

2.分支结构

按照给出的条件,判断是否执行内部语句。

3.循环结构

符合条件时,重复执行内部语句。

二、分支结构:if else

1.案例(1):使用if else 和 && 短路与逻辑运算符,打印三个数的中间值。

class  FlowControl{

	public static void main(String[] args) {

		//使用if else找出三个数的中间值 
		int num1 = 1111;
		int num2 = 618;
		int num3 = 1024;
		int max;

		if (num1 >= num2 && num1 <= num3){
			max = num1;		//当num1大于等于其他num值时,将num1赋值给max。
		}else if(num2 >=num1 && num2 <= num3){
			max = num2;		//当num2大于等于其他num值时,将num2赋值给max。
		}else{
			max = num3;		//以上都不成立时,将num3赋值给max。
		}

		System.out.println("三个数的中间值为:" + max);
	}
}

输出结果是num3的值1024

结论:使用&&短路一次完成num是否为中间值的条件判断,相比使用if else的嵌套,代码更为简洁。

2.案例(2):使用Scanner类,输入3个数值,并按从大到小的顺序打印出来。

import java.util.Scanner;	//导入Scanner类

class  FlowControl{

	public static void main(String[] args) {

		Scanner receiverNum = new Scanner(System.in);	//创建一个名为receiverNum的Scanner类的对象
		System.out.println("请输入三个数:");
		int num1 = receiverNum.nextInt();				//接收输入的第一个数
		int num2 = receiverNum.nextInt();				//接收输入的第一个数
		int num3 = receiverNum.nextInt();				//接收输入的第一个数
		if (num1 >= num2){
			if (num3 >= num1){							//使用if嵌套做二次分支
				System.out.println(num3 + "," + num1 + "," + num2);
			}else if(num3 <= num2){
				System.out.println(num1 + "," + num2 + "," + num3);
			}else{
				System.out.println(num1 + "," + num3 + "," + num2);
			}
		}else{
			if (num3 >= num2){
				System.out.println(num3 + "," + num2 + "," + num1);
			}else if (num3 <= num1){
				System.out.println(num2 + "," + num1 + "," + num3);
			}else{
				System.out.println(num2 + "," + num3 + "," + num1);
			}
		}
	}
}

输出结果:键盘输入了三个数,分别按从大到小的顺序输出了。

结论:在需要对多个数(3个及以上)做排序时,使用if嵌套可以简化条件判断语句,但是不建议多重嵌套使用,会大幅降低代码的可读性。

三、分支结构:switch case

1.案例(3):输入成绩,使用switch case 判断成绩是否及格

//使用switch case 判断成绩是否及格
		Scanner receiverNum = new Scanner(System.in);	//创建一个名为receiverNum的Scanner类的对象
		System.out.println("请输入成绩(0-100):");
		int score = receiverNum.nextInt();				//输入分数
		switch (score/10){
		case 0 :
		case 1 :
		case 2 :
		case 3 :
		case 4 :
		case 5 :
			System.out.print("不及格");				//匹配到case后会顺序执行后续case,直到break。
			break;
		case 6 :
		case 7 :
		case 8 :
		case 9 :
		case 10 :
			System.out.print("及格");
			break;
		}

输出结果:当输入成绩为55时,打印不及格,输入99时,打印及格。

结论:switch case只能用一个值来判断执行的下游分支流程,而不能是一个范围(布尔类型)匹配完成后,程序会继续往后执行,直至break语句或执行完全部内部语句。

2.案例(4):利用switch case 不遇到break可以一直执行到结束的特性,打印输入的年月日是当年的第几天。

//使用switch case 打印出输入的年月日是当年的第几天
		Scanner receiverNum = new Scanner(System.in);
		System.out.println("请输入年:");
		int year = receiverNum.nextInt();	//接收年份
		System.out.println("请输入月:");
		int month = receiverNum.nextInt();	//接收月份
		System.out.println("请输入日:");
		int day = receiverNum.nextInt();	//接收日期

		int sumDay =0;						//定义当年第几天数
		int febDay ;						//定义febDay代指二月的天数

		//判断是否为闰年并为febDay赋值相应天数
		if ((year % 4 == 0 && year % 100 != 0) || year % 400 ==0){
			febDay = 29;
		}else{
			febDay = 28;
		}

		switch (month){
		case 12:
			sumDay += 30;
		case 11:
			sumDay += 31;
		case 10:
			sumDay += 30;
		case 9:
			sumDay += 31;
		case 8:
			sumDay += 31;
		case 7:
			sumDay += 30;
		case 6:
			sumDay += 31;
		case 5:
			sumDay += 30;
		case 4:
			sumDay += 31;
		case 3:
			sumDay += febDay;
		case 2:
			sumDay += 31;
		case 1:
			sumDay += day;
			System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDay + "天");
			break;
		default:
			System.out.println("输入月份有误");		//当输入月份不是1-12时打印这句话		
		}

输出结果:输入月份有误时能够正确提示,输入2004.3.1打印2004年3月1日是当年的第61天,输入2021.3.1打印2021年3月1日是当年的第60天。

结论:在使用switch case时,break是可选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值