2021-9-17-学习日志6-分支语句

本文详细介绍了Java中的流程控制,特别是分支结构的三种形式:if, switch及其使用场景。通过实例解析了if语句的不同形式和执行流程,包括单一if、if-else、if-else if-else结构,以及如何运用if判断实现奇偶数判断。同时,文章还探讨了switch语句的结构和执行过程,并提供案例展示了如何利用switch进行考试成绩奖励的判断。" 129750143,14843591,智能体协作新突破:MACC实现动态高效协同,"['人工智能', '强化学习', '协作智能', '多智能体系统', '分布式学习']

1.流程控制

概述:

1.1)流程控制语句分类:

①顺序结构:

②分支结构:if,swich

③循环结构:for,while,do...while)

1.2)顺序结构:是指程序中最简单最基本的流程控制。没有特定的语法结构,按照代码先后顺序依次执行。程序中大多数的代码都是这样执行的。

顺序结构执行流程:就是从上往下依次执行。

/*
	顺序语句
*/
public class OrderDemo {
	public static void main(String[] args){
		System.out.println("你好~");
		
		System.out.println("今天天气很不错~");
		System.out.println("希望你有一个美好的一天~");
		
		System.out.println("再见~");
	}
}

DOS命令提示符窗口

C:\Users\Apple>

D:\>javac OrderDemo.java

D:\>java OrderDemo
你好~
今天天气不错~
希望你有一个美好的一天~
再见~

D:\>

2.if语句

2.1)if语句格式1

2.1.1)格式:

if(关系表达式){

        语句体;

}

2.1.2)执行流程:

①首先计算关系表达式值

②如果关系表达式的值为true,就执行语句体

③如果关系表达式的值为false,就不执行语句体

④继续执行后面的语句内容

/*
	if语句格式1
	
	格式:
		if(关系表达式){
			语句体;
		}
	
	执行流程:
		1.首先计算关系表达式值
		2.如果关系表达式的值为true,就执行语句体
		3.如果关系表达式的值为false,就不执行语句体
		4.继续执行后面的语句内容
*/
public class IfDemo {
	public static void main(String[] args){
		System.out.println("start");
		
		//定义变量
		int a = 10;
		int b = 20;
		
		//需求:判断a和b的值是否相等,如果相等,就在控制台输出:a等于b
		if(a == b){
			System.out.println("a等于b");
		}
		
		System.out.println("over");		
	}
}

DOS命令提示符窗口

C:\Users\Apple>d:

D:\>javac IfDemo.java

D:\>java IfDemo
start
over

D:\>

2.2)if语句2

2.2.1)格式:

if(关系表达式){

        语句体1;

}else{

        语句体2;

}

2.2.2)执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

/*
	If语句
	格式2:
	if(关系表达式){
		语句体1;
	}else{
		语句体2;
	}
	执行流程:
	1:首先计算关系表达式的值
	2:如果关系表达式的值为true,就执行语句体1
	3:如果关系表达式的值为false,就执行语句体2
	4:继续执行后面的语句内容
*/
public class IfDemo02{
	public static void main(String[] args){
		System.out.println("start");
		
		//定义两个变量
		int a = 10;
		int b = 20;
		
		/*
        需求:判断a 是否大于b,如果是,在控制台输出:a的值大于b,如果不是。
        在控制台输出a不大于b
        */
		if(a > b){
			System.out.println("a的值大于b");
		}else{
			System.out.println("a的值不大于b");
		}
		
		System.out.println("over");

		System.out.println("start2");
		
		//更改变量
		b = 5;
		
		//判断:
		if(a > b){
			System.out.println("a的值大于b");
		}else{
			System.out.println("a的值不大于b");
		}
		
		System.out.println("end");
	}
}

DOS命令提示符窗口

C:\Users\Apple>

D:\>javac IfDemo02.java

D:\>java IfDemo02
start
a的值不大于b
over
start2
a的值大于b
end

D:\>

执行流程:

关系表达式        👉(true) 👉  语句体1   👉  其他语句

                          👉(false)👉  语句体2   👉  其他语句

2.3)案例:奇偶数

需求:任意给出一个整数,并在控制台输出给出一个整数,请用程序实现判断该整数是奇数还是偶数。

分析:

①:为了体现任意给出一个证书,采用家农安输入一个数据

使用键盘录入功能需要导包

import java.util.Scanner;

创建对象

Scanner sc = new Scanner(System.in);

接收数据

int number = sc.nextInt();

②:判断整数时偶数还是奇数要分两种情况进行判断,使用if…else结构

if (){

        表达式1

}else{

        表达式2

}

③判断是否是偶数需要使用取余运算符实现该功能number%2 == 0

if (number % 2 == 0){

}else{

}

④:根据判定情况,在控制台输出对应的内容

if (number & 2 == 0){

        System.out.println(number + "是偶数");

}else{

        Sysrem,out.println(number + "是奇数");

}

/*
	需求:任意给出一个整数,并在控制台输出给出一个整数,
	请用程序实现判断该整数是奇数还是偶数。
	
*/

import java.util.Scanner;

public class IfDemoTest1{
	public static void main(String[] args){
		//为了体现任意给出一个整数,采用键盘录入一个数据,(导包,创建对象,接收数据)
		Scanner sc = new Scanner(System.in);
	
		System.out.println("请输入一个整数:");
		int number = sc.nextInt();
	
		/*
		判断整数时偶数还是奇数要分两种情况进行判断,使用if…else结构;
		判断是否是偶数需要使用取余运算符实现该功能number%2 == 0;
		根据判定情况,在控制台输出对应的内容
		*/
		if (number % 2 == 0){
			System.out.println(number + "偶数");
		}else{
			System.out.println(number + "奇数");
		}	
	}
}	

DOS命令提示符窗口

C:\Users\Apple>d:

D:\>javac IfDemoTest1.java

D:\>kava IFdemoTest1
请输入一个整数:
88
88偶数

D:\>javac IfDemoTest1.java

D:\>kava IFdemoTest1
请输入一个整数:
99
99奇数

D:\>

2.4)if语句3

2.4.1)格式:

if(关系表达式){

        语句体1;

}else if(关系表达式2){

        语句体2;

}

else{

        语句体n+1;

}

执行流程:

①首先计算关系表达式1的值

②如果值为true,就执行语句1;如果值为false,就计算表达式2的值。

③如果关系表达式2的值为true,就执行语句2;如果关系表达式2的值为false就计算关系表达式3的值

④……

⑤如果没有任何关系表达式为true,就执行语句体 n+1 。

/*
	if语句3
	格式:
		if(关系表达式1){
			语句体1;
		} else if(关系表达式){
			语句体2;
		}
		……
		else{
			语句体n+1;
		}
	执行流程:
		①首先计算关系表达式1的值
		②如果值为true,就执行语句1;如果值为false,就计算表达式2的值。
		③如果关系表达式2的值为true,就执行语句2;如果关系表达式2的值为
		false就计算关系表达式3的值		
		④……
		⑤如果没有任何关系表达式为true,就执行语句体 n+1 。
*/
import java.util.Scanner;

public class IfDemo03{
	public static void main(String[] args){
		System.out.println("start");
		
		/*需求:键盘录入一个星期数(1,2,3,4,5,6,7),
		输出对应的星期一,……星期日
		*/
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一个星期数(1-7):");
		int week = sc.nextInt();
		
		if(week == 1){
			System.out.println("星期一");
		}else if(week == 2){
			System.out.println("星期二");
		}else if(week == 3){
			System.out.println("星期三");
		}else if(week == 4){
			System.out.println("星期四");
		}else if(week == 5){
			System.out.println("星期五");
		}else if(week == 6){
			System.out.println("星期六");
		}else if(week == 7){
			System.out.println("星期天");
		}
		System.out.println("end");
	}
}

DOS命令提示符窗口

C:\Users\Apple>d:

D:\>javac IfDemo03.java

D:\>java IfDemo03
start
请输入一个星期数(1-7):
5
星期五
end

D:\>

2.5)案例:考试奖励

需求:小明快要期末考试了,小明爸爸对他说,会根据不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

分析:

①小明考试成绩未知,可以使用键盘录入的方式获取数值,使用键盘录入功能需要导包,创建对象,接收数据。

import java.util.Scanner;

Scanner sc = new Scanner(System.in);

int score = sc.nextInt();

②由于奖励种类较多,属于多种判断,采用if…else…if格式来实现

if( ){

}else if(){

}else if(){

}else{

}

③为每种判断设置对应的条件

if(score >= 95 && score <= 100){

        System.out.println("自行车");

}else if(score >= 90 && score <= 94){

        System.out.println("游乐场");

}else if(score >= 80 && score <= 89){

        System.out.println("变形金刚");

}else if(score >=79){

        System.out.println("胖揍一顿");

}

/*
	需求:小明快要期末考试了,小明爸爸对他说,会根据不同的考试成绩,送他不同的礼物,
	假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。
	奖励:
		95-100  自行车
		90-94   游乐场1次
		80-89   变形金刚玩具
		80以下  胖揍一顿			
*/
import java.util.Scanner;

public class IfDemoTest2{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个分数:");
		int score = sc.nextInt();
		/*
		if(score >= 95 && score <= 100){
			System.out.println("自行车一辆");
		}else if(score >= 90 && score <= 94){
			System.out.println("游乐场1次");
		}else if(score >= 80 && score <= 89){
			System.out.println("变形金刚玩具1个");
		}else{
			System.out.println("胖揍一顿");
		}
		如果是这样写的话, 不够严谨,若输入数字120,得出的结论也会是胖揍一顿
		*/
		//数据测试:正确数据,边界数据,错误数据
		if(score > 100 || score < 0){
			System.out.println("你输入的数字有误");
		}else if(score >= 95 && score <= 100){
			System.out.println("自行车一辆");
		}else if(score >= 90 && score <= 94){
			System.out.println("游乐场1次");
		}else if(score >= 80 && score <= 89){
			System.out.println("变形金刚玩具1个");
		}else{
			System.out.println("胖揍一顿");
		}
	}
}

DOS命令提示符窗口

C:\Users\Apple>d:

D:\>javac IfDemoTest2.java

D:\>java IfDemoTest2
请输入一个分数:
79
胖揍一顿

D:\>java IfDemoTest2
请输入一个分数:
99
自行车一辆

D:\>java IfDemoTest2
请输入一个分数:
139
你输入的数字有误

3.switch语句

3.1)格式:

switch(表达式){

        case值1:

                        语句体1;

                        break;

        case值2:

                        语句体2;

                        break;

default:

                        语句体n+1;

                        [break;]

}

格式说明:

①表达式:取值为byte、short、int、char、JDK5以后是可以枚举,JDK7以后是可以String

②case:后面跟的是要和表达式进行比较的值。

③break:表示中断,结束的意思,用来结束switch语句。

④default:表示多有情况都不匹配的时候,就执行该处的内容,和if语句的else相似

执行流程:

表达式        👉        值1        👉        语句体1        👉        break        👉        其他语句

            如果不相等,就与值2 比较,若与值2相等就执行值2的break语句、若是与case值都不相等,则执行default的语句。

/*
	switch语句	
	格式:
		switch(表达式){
			case值1;
			语句体;
			break;
			case值1:
			语句体2;
			bereak;
			…
			default;
			语句体n+1;
			[break;]
		}		
	格式说明:
		表达式,取值byte、short、int、char、JDK5以后是可以枚举,
		JDK7以后是可以String
        case:后面跟的是要和表达式进行比较的值。
        break:表示中断,结束的意思,用来结束switch语句。
        default:表示多有情况都不匹配的时候,就执行该处的内容,
		和if语句的else相似		
	执行流程:
		首先计算表达式的值。
		依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,
		遇到break就会结束。如果所有的case后面的值和表达式的值都不匹配,
		就会执行default里面的语句体,然后程序结束掉。
*/

import java.util.Scanner;

public class SwitchDemo{
	public static void main(String[] args){
		System.out.println("start");
		
		//需求,键盘录入一个星期数(1,2..7),输出对应的星期一,星期二,。。。星期日
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个星期数(1-7):");
		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;	
		}		
		System.out.println("end");		
	}
}

DOS命令提示符窗口

C:\Users\Apple>

D:\>javac SwitchDemo.java

D:\>java SwithDemo
start
请输入一个星期数(1-7):
5
星期五
end

D:\>java SwithDemo
start
请输入一个星期数(1-7):
9
你输入的星期数有误!
end

D:\>

3.2)案例:春夏秋冬

需求:一年有12个月,分属春夏秋冬四个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。

分析:

3月 - 5月 春季、6月 - 8月夏季、9月 - 11月秋天、10月-1月冬季;

①键盘录入月份数据,使用变量接收

import java.util.Scanner;

Scanner sc = new Scanner(System.in);

int month = sc.nextInt();

②多情况判断,这里采用switch语句实现

/*
	案例:春夏秋冬
	一年有12个月,分属春夏秋冬四个季节,键盘录入一个月份,
	请用程序实现判断该月份属于哪个季节,并输出。
*/
import java.util.Scanner;

public class SwitchDemoTest{
	public static void main(String[] args){
		System.out.println("start");
			
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个月份(1-12):");
			
		int month = sc.nextInt();
		switch(month){
			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;
			case 8:
				System.out.println("夏季");
				break;
			case 9:
				System.out.println("秋季");
				break;
			case 10:
				System.out.println("秋季");
				break;
			case 11:
				System.out.println("秋季");
				break;
			case 12:
				System.out.println("冬季");
				break;
			default:
				System.out.println("你输入的月份有错误!");
			System.out.println("end");
		}
	}
}

DOS命令提示符窗口

C:\Users\Apple>

D:\>javac SwitchDemoTest.java

D:\>java SwitchDemoTest
start
请输入一个月份(1-12):
9
秋季

D:\>

*注:

①在default这里的break是可以省略的!

②假设,我在case的地方少了一个break的话,这时候会出现穿透。

假设:

case 2:

        System.out.println("冬季");

case 3:

        System.out.println("春季");

        break;

这种事时候dos测试的时候输入2月,会得到冬季、春季、

这个就是case穿透

/*
	案例:春夏秋冬
	一年有12个月,分属春夏秋冬四个季节,键盘录入一个月份,
	请用程序实现判断该月份属于哪个季节,并输出。
*/
import java.util.Scanner;

public class SwitchDemoTest2{
	public static void main(String[] args){
		System.out.println("start");
			
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个月份(1-12):");
			
		int month = sc.nextInt();
		
		//case 穿透
		
		switch(month){
			case 1:	
			case 2:
			case 12:
				System.out.println("冬季");
				break;
			case 3:
			case 4:
			case 5:
				System.out.println("春季");
				break;
			case 6:
			case 7:
			case 8:
				System.out.println("夏季");
				break;
			case 9:
			case 10:
			case 11:
				System.out.println("秋季");
				break;
			default:
				System.out.println("你输入的月份有错误!");
			System.out.println("end");
		}
	}
}

DOS命令提示符窗口

C:\Users\Apple>

D:\>javac SwitchDemoTest.java

D:\>java SwitchDemoTest
start
请输入一个月份(1-12):
9
秋季

D:\>

注意事项:在Switch语句中,如果case控制的语句体后面不屑break,将出现穿透现象,在不判断下一个case值的情况下,向下运行,直到遇到break,或者整体Switch语句结束。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值