Day04-java判断和循环语句

本文围绕Java编程展开,介绍了常量的含义及定义方式,阐述了转义字符的特殊意义。重点讲解了Java的执行语句,包括顺序、分支和循环执行,详细分析了判断语句中的if各分支及switch分支,还介绍了循环语句中的for循环及其嵌套,通过多个案例辅助理解。


常量

含义:在程序的执行过程中,该量不能发生变化

  1. 使用final修饰的变量成为常量
			final int a = 10;
			System.out.println(a);
  1. 数字字面量
			System.out.println(10+20);
  1. 字面值常量
			System.out.println("用良心做教育,做真实的自己");

转义字符

表示具体特殊意义的字符本身

​ " 代表一个双引号
​ ’ 代表一个单引号
​ \ 代表一个斜杠
​ \n 代表换行
​ \t 代表水平制表

		System.out.println("何老师说:\"用良心做教育,做真实的自己。\"");
		System.out.println("何老师说:\'用良心做教育,做真实的自己。\'");
		System.out.println("何老师说:\\用良心做教育,做真实的自己。\\");
		
		System.out.print("杨晨\n");
		System.out.print("陈希");
		
		System.out.println("3*3=9\t3*4=12\t3*5=15");
		System.out.println("4*3=12\t4*4=16\t4*5=20");

Java的执行语句

  1. 顺序执行:方法中的代码从上往下执行
  2. 分支执行:依据不同的条件去处理不同功能的代码
    2.1 if
    2.2 switch
  3. 循环执行:条件成立会重复性的执行某个功能
    3.1 for
    3.2 while
    3.3 do-while
  4. 特殊的流程控制语句
    4.1 break
    4.2 continue
    4.3 return
    4.4 lable

判断语句

if分支

简单的if分支

语法结构:

​				if(表达式){

​						...代码块..

​				}

理解:

  	表达式的结果一定是boolean类型
  		true - 执行代码块
  		false - 跳出if分支

做实验:

	if(true){
		System.out.println("你好呀!");
	}

案列:键盘输入成绩,大于98分,奖励法拉利玩具车

	Scanner input=new Scanner(System.in);
	double javaScore = input.nextDouble();
	
	if(javaScore>98){
		System.out.println("奖励一辆法拉利");
	}

案列:计算 健康值=体重(kg)/身高(m)的平方 20~25健康

	Scanner input = new Scanner(System.in);
	System.out.println("请输入身高:");
	double height = input.nextDouble();
	System.out.println("请输入体重:");	
	double weight = input.nextDouble();
	double zhi = weight/(height*height);
	if(zhi>=20&&zhi<=25){
	System.out.println("健康");
	}
	
	System.out.println("请输入java成绩:");
	double javaScore= input.nextDouble();
	System.out.println("请输入音乐成绩");
	double musicScore= input.nextDouble();
	
	if((javaScore>=98&&musicScore>=80)||(javaScore==100&&musicScore>70)){
		System.out.println("奖励法拉利一辆");
	}

案列:键盘输入成绩,成绩大于98分奖励劳斯莱斯一辆,否则罚抄代码

	Scanner input=new Scanner(System.in);
	System.out.println("请输入成绩:");
	double javaScore=input.nextDouble();
	if(javaScore>98){
		System.out.println("奖励劳斯莱斯一辆");
	}else{
		System.out.println("罚抄代码");
	}

复杂条件的if分支

案例一: 人类的健康值在20-25的数值内为健康
(健康值算法为:体重(Kg) / 身高(米)的平方)

			//1.输入体重和身高
			Scanner scan = new Scanner(System.in);
			System.out.println("请输入体重(Kg):");
			double weight = scan.nextDouble();
			System.out.println("请输入身高(m):");
			double height = scan.nextDouble();
			
			//2.计算健康值
			double health = weight/(height*height);
			
			//3.判断
			if(health >= 20 && health <=25){
				System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
			}

案例二:小西Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。

			Scanner scan = new Scanner(System.in);
	
			System.out.println("请输入Java成绩:");
			double javaScore = scan.nextDouble();
			System.out.println("请输入音乐成绩:");
			double musicScore = scan.nextDouble();
			
			if((javaScore>98&&musicScore>80) || (javaScore==100&&musicScore>70)){
				System.out.println("奖励小西法拉利玩具赛车一辆");
			}

总结:if可以判断数值的区间和复杂的条件

if…else…

语法规则:

  		if(表达式){
  			...代码块...
  		}else{
  			...else代码块...
  		}

理解:

  		表达式的值必须是boolean
  			true - 执行代码块
  			false- 执行else代码块

做实验:

			if(false){
				System.out.println("代码块");
			}else{
				System.out.println("else代码块");
			}
			
			System.out.println("if分支以外的代码");

案列:如果京香考试成绩大于98分,老师就奖励他一个劳斯莱斯,否则老师就罚他进行编码

			Scanner scan = new Scanner(System.in);
			System.out.println("请输入Java成绩:");
			double javaScore = scan.nextDouble();
			
			if(javaScore>98){
				System.out.println("奖励京香劳斯莱斯玩具赛车一辆");
			}else{
				System.out.println("老师给京香通宵补课");
			}

总结:if…else…二选一

if…else if …

语法结构:

if(表达式){
	//...代码块1...
}else if(表达式){
	//...代码块2...
]else if(表达式){
	//..代码块n...
}else{
	//...else代码块...
}

理解:

		表达式的结果必须是boolean值
		从上往下判断,哪个表达式先成立(true),就执行相应的代码块

注意:

		else{...else代码块...}根据需求可写可不写

做实验:

			if(false){
				System.out.println("...代码块1...");
			}else if(false){
				System.out.println("...代码块2...");
			}else if(false){
				System.out.println("...代码块n...");
			}else{
				System.out.println("...else代码块...");
			}
			
			System.out.println("if分支以外的代码");

案例一:人类的健康值在15-20的数值内为偏瘦20-25的数值内为健康25-30的数值内为偏胖健康值算法为:体重(Kg) / 身高(米)的平方)

			//1.输入体重和身高
			Scanner scan = new Scanner(System.in);
			System.out.println("请输入体重(Kg):");
			double weight = scan.nextDouble();
			System.out.println("请输入身高(m):");
			double height = scan.nextDouble();
			//2.计算健康值
			double health = weight/(height*height);
			
			//3.判断
			if(health>=15 && health<20){
				System.out.println("小护士说:\"偏瘦,多喝啤酒,多吃垃圾食品,多熬夜\"");
			}else if(health>=20 && health<25){
				System.out.println("小护士说:\"身体健康,保持现有生活规律\"");
			}else if(health>=25 && health<30){
				System.out.println("小护士说:\"偏胖,多运动,嘿嘿嘿~~~\"");
			}else{
				System.out.println("小护士说:\"数据异常,请到***医院详细检查\"");
			}

案例二:通过键盘录入学生成绩如果在90-100之间,则打印“A”,否则如果在80-90之间,则打印“B”,否则如果在70-80之间,则打印“C”否则如果在60-70之间,则打印“D”否则打印“E”

			Scanner scan = new Scanner(System.in);
		
			System.out.println("请输入成绩:");
			double score = scan.nextDouble();
			
			if(score >= 90 && score<=100){
				System.out.println("A");
			}else if(score >= 80 && score<90){
				System.out.println("B");
			}else if(score >= 70 && score<80){
				System.out.println("C");
			}else if(score >= 60 && score<70){
				System.out.println("D");
			}else if(score >= 0 && score<60){
				System.out.println("E");
			}else{
				System.out.println("成绩异常");
			}

案例:举行运动会,百米赛跑跑入16秒内的学生有资格进决赛,
根据性别分别进入男子组和女子组。

			Scanner scan = new Scanner(System.in);
	
			System.out.println("请输入比赛成绩:");
			double score = scan.nextDouble();
			
			if(score >= 0 && score < 16){
				System.out.println("请输入性别:");
				String sex = scan.next();
				if(sex.equals("男")){//判断两个字符串内容是否相等
					System.out.println("恭喜,进入到男子组决赛");
				}else if(sex.equals("女")){//判断两个字符串内容是否相等
					System.out.println("恭喜,进入到女子组决赛");
				}else{
					System.out.println("性别异常");
				}
				
			}else{
				System.out.println("重在参与");
			}

总结:

	if(){} :单纯判断某个条件
	if...else...:二选一
	if...else if...:多选一
	if可以判断单个值,也可以判断区间,也可以判断复杂的条件

switch分支

语法结构:

	switch(表达式){
		case 值1:
			...代码块1...
		break;
		case 值2:
			...代码块2...
		break;
		case 值n:
			...代码块n...
		break;
		default:
			...default代码块...
		break;
	}

理解:

	表达式的结果:byte、short、int、char、字符串、枚举
	分别给值1、值2、值n做比较,哪个相等就执行对应的代码块
	如果都不相等,执行default代码块
	break的作用是跳出整个分支语句

注意:

	default:
		...default代码块...
	break;
	default代码块根据需求可写可不写

做实验:

			switch(1000){
				case 10:
					System.out.println("10");
				break;
				case 50:
					System.out.println("50");
				break;
				case 100:
					System.out.println("100");
				break;
				default:
					System.out.println("default代码块");
				break;
			}
			System.out.println("switch分支以外的代码");

案例:北条参加计算机编程大赛
如果获得第一名,将参加1个月马尔代夫旅游
如果获得第二名,将奖励苹果Pro笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,老师晚上给北条通宵补课

			Scanner scan = new Scanner(System.in);
			System.out.println("请输入北条麻衣的比赛名次:");
			String str = scan.next();
			
			switch(str){
				case "第一名":
					System.out.println("-参加1个月马尔代夫旅游");
				break;
				case "第二名":
					System.out.println("奖励苹果Pro笔记本电脑一部");
				break;
				case "第三名":
					System.out.println("奖励移动硬盘一个");
				break;
				default:
					System.out.println("老师晚上给北条通宵补课");
				break;
			}

面试题:

		case的值可以相同吗? 不允许相同
		default可以省略吗? 可以
		break可以省略吗?可以
		default的位置一定要在最后吗? 不一定,最好放在最后可读性会高一些
		表达式值的类型可以是什么? byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)

案例:输入年和月,输出当月的天数

			Scanner scan = new Scanner(System.in);
			System.out.println("请输入年:");
			int year = scan.nextInt();
			System.out.println("请输入月:");
			int month = scan.nextInt();
			int day = 0;//当月天数
			switch(month){
				case 1:case 3:case 5:case 7:case 8:case 10:case 12:
					day = 31;
				break;
				case 4:case 6:case 9:case 11:
					day = 30;
				break;
				case 2:
					if((year%4==0&&year%100!=0) || (year%400==0)){//闰年
						day = 29;
					}else{//平年
						day = 28;
					}
				break;
			}
			
			System.out.println(year + "年" + month + "月的天数为:" + day + "天");

if vs switch

		表达式的区别:
			if的表达式:boolean
			switch的表达式: byte、short、int、char、字符(JDK1.7)、					枚举(JDK1.5)

应用场景的区别:

			if:判断单个值、判断区间、判断复杂条件
			switch:判断单个值

循环语句

for循环

语法结构:

		for(表达式1;表达式2;表达式3){
			...代码块...
		}

理解:

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

执行流程:

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

做实验:

			for(int i = 0;i<5;i++){
					System.out.println("键盘敲烂,月薪过万!!!");
			}

for循环变形记:

  1. 代码块执行完毕后再更新变量,i++和++i效果是一样的
  2. for循环中定义的变量他的作用域就在for循环内
  3. 更新变量没有局限性,可以自增也可以自减
   			int k = 0;
   			for(;k<5;){
   				System.out.println("键盘敲烂,月薪过万!!!");
   				k++;
   			}
   			System.out.println(i);//5
   			for(int i = 1;i<=5;i++){
   				System.out.println(i);
   			}	
   			for(int i = 5;i>=1;i--){
   				System.out.println(i);
   			}
   			for(int i = 1;i<=9;i+=2){
   				System.out.println(i);
   			}

死循环:
注意:死循环是应该要积极避免的

			for(;;){
				System.out.println("死循环");
			}
			System.out.println("xxxxx");

案例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;
				//sum = (int)(sum+num);
			}
			System.out.println("总和为:" + sum);

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

			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/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);	

for循环嵌套

案例1:打印以下图形

				//****
				//****
				//****
				for(int i = 0;i<3;i++){//控制行数
					for(int j = 0;j<4;j++){//控制列数
						System.out.print("*");
					}
					System.out.println();
				}

案例2:打印以下图形

				//*		i=0
				//**	i=1
				//***	i=2
				//****	i=3
				//*****	i=4
				for(int i = 0;i<5;i++){
					for(int j = 0;j<=i;j++){
						System.out.print("*");
					}
					System.out.println();
				}

案例3:打印以下图形

			//***** i = 0
			//****  i = 1
			//***	i = 2	
			//**    i = 3
			//*     i = 4
			for(int i = 0;i<5;i++){
				for(int j = 0;j<5-i;j++){
					System.out.print("*");
				}
				System.out.println();
			}

案例4:打印以下图形

			//***** 	i = 0
			 //****  	i = 1
			  //***		i = 2	
			   //**   	i = 3
			    //*   	i = 4
			for(int i = 0;i<5;i++){
				//打印空格
				for(int k = 0;k<i;k++){
					System.out.print(" ");
				}
				//打印星星
				for(int j = 0;j<5-i;j++){
					System.out.print("*");
				}
				System.out.println();
			}	
<think>好的,我现在需要给用户讲解Java中的分支语句循环语句。首先,我得回忆一下这两类流程控制语句的基本概念具体用法,确保自己理解正确,然后按照用户的要求结构清晰、步骤分明地组织内容。 首先,分支语句Java中的分支语句主要包括if、if-else、if-else if-else以及switch语句。我需要分别介绍它们的语法应用场景。例如,if语句用于单一条件判断,if-else处理两种可能的情况,而多个条件时使用if-else if结构。switch语句适用于多分支选择,特别是当有多个case需要处理的时候。要注意switch支持的数据类型,比如int、char、String(Java7+)等,以及breakdefault的作用。 接下来是循环语句,包括for、while、do-while循环,还有增强型for循环。需要解释每种循环的适用情况,比如for循环通常在已知循环次数时使用,whiledo-while在条件满足时循环,其中do-while至少执行一次循环体。增强型for循环用于遍历数组或集合。此外,还要提到循环控制语句breakcontinue的作用,break用于跳出整个循环,continue跳过当前迭代进入下一次循环。 在组织内容时,要确保每个部分都有明确的例子,帮助用户理解。比如,if语句的例子可以是判断一个数是否为正数;switch的例子可以是根据星期几执行不同操作。循环的例子可以包括打印数字1到10,或者遍历数组元素。同时,要注意用户提到的LaTeX格式,行内公式用$...$,独立公式用$$...$$,虽然这里可能数学公式不多,但如果有需要展示变量或表达式的地方,比如循环中的条件表达式,要正确应用格式。 还需要检查是否有语法错误,例如Java代码的缩进符号是否正确,避免误导用户。例如,if语句后的代码块是否用大括号括起,switch的case后是否有break等。另外,要确保使用中文回答,避免术语混淆,必要时给出术语的英文原文,如“增强型for循环(Enhanced for loop)”。 用户要求结构清晰,逐步解决问题,所以可能需要分点讲解,每个语句类型单独成段,先语法后示例。同时,在最后做一个对比总结,帮助用户区分不同语句的使用场景,比如什么时候用if-else,什么时候用switch;什么时候用for,什么时候用while。 可能遇到的疑问点包括:switch是否支持字符串(是的,Java7及以上支持),do-whilewhile的区别,break在switch循环中的不同作用。需要预先考虑到这些,并在讲解中明确指出,避免用户困惑。 最后,确保整个回答符合用户给定的系统级指令,特别是LaTeX格式的正确使用,虽然问题主要涉及编程,但如果有数学表达式的话要正确应用。例如,在讲解循环变量时,如果有涉及数学表达式如$i++$,需要用行内公式格式。但可能这种情况较少,所以重点还是放在代码示例的正确展示上。 总结步骤: 1. 引言,概述流程控制的重要性。 2. 分支语句部分,分if系列switch讲解,每个子部分给出语法示例。 3. 循环语句部分,分for、while、do-while增强型for,各语法示例。 4. 控制语句breakcontinue的作用。 5. 对比总结,应用场景建议。 6. 检查LaTeX格式是否正确,代码示例是否正确,中文表达是否准确。</think>Java流程控制语句中的分支语句循环语句是编程中控制代码执行逻辑的核心结构。以下是它们的详细讲解: --- ### 一、分支语句 分支语句根据条件决定执行哪些代码块。 #### 1. **`if` 语句** - **语法**: ```java if (条件表达式) { // 条件为 true 时执行 } ``` - **示例**: ```java int num = 10; if (num > 0) { System.out.println("正数"); // 输出:正数 } ``` #### 2. **`if-else` 语句** - **语法**: ```java if (条件表达式) { // 条件为 true 时执行 } else { // 条件为 false 时执行 } ``` - **示例**: ```java int score = 85; if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); } ``` #### 3. **`if-else if-else` 语句** - **语法**: ```java if (条件1) { // 条件1为 true 时执行 } else if (条件2) { // 条件2为 true 时执行 } else { // 其他情况执行 } ``` - **示例**: ```java int temperature = 25; if (temperature > 30) { System.out.println("高温"); } else if (temperature > 20) { System.out.println("舒适"); // 输出:舒适 } else { System.out.println("低温"); } ``` #### 4. **`switch` 语句** - **语法**: ```java switch (表达式) { case 值1: // 匹配值1时执行 break; case 值2: // 匹配值2时执行 break; default: // 默认情况执行 } ``` - **示例**: ```java int day = 3; switch (day) { case 1: System.out.println("周一"); break; case 3: System.out.println("周三"); break; // 输出:周三 default: System.out.println("未知"); } ``` - **注意**: - `switch` 支持 `int`、`char`、`String`(Java 7+)等类型。 - `break` 用于跳出 `switch`,否则会“穿透”执行后续 `case` 代码。 --- ### 二、循环语句 循环语句用于重复执行某段代码。 #### 1. **`for` 循环** - **语法**: ```java for (初始化; 循环条件; 迭代操作) { // 循环体 } ``` - **示例**: ```java for (int i = 1; i <= 5; i++) { System.out.print(i + " "); // 输出:1 2 3 4 5 } ``` #### 2. **`while` 循环** - **语法**: ```java while (循环条件) { // 循环体 } ``` - **示例**: ```java int count = 0; while (count < 3) { System.out.print(count + " "); // 输出:0 1 2 count++; } ``` #### 3. **`do-while` 循环** - **语法**: ```java do { // 循环体 } while (循环条件); ``` - **示例**: ```java int x = 5; do { System.out.print(x + " "); // 输出:5 x++; } while (x < 5); // 条件不成立,但循环体已执行一次 ``` #### 4. **增强型 `for` 循环** - **语法**: ```java for (数据类型 变量名 : 集合或数组) { // 循环体 } ``` - **示例**: ```java int[] nums = {10, 20, 30}; for (int num : nums) { System.out.print(num + " "); // 输出:10 20 30 } ``` --- ### 三、控制语句 1. **`break`**: - 跳出当前循环或 `switch` 语句- 示例:在 `for` 循环中提前终止: ```java for (int i = 0; i < 10; i++) { if (i == 5) break; System.out.print(i + " "); // 输出:0 1 2 3 4 } ``` 2. **`continue`**: - 跳过当前循环的剩余代码,进入下一次迭代。 - 示例:跳过偶数: ```java for (int i = 0; i < 5; i++) { if (i % 2 == 0) continue; System.out.print(i + " "); // 输出:1 3 } ``` --- ### 四、对比总结 | **语句类型** | **适用场景** | |----------------|---------------------------------------| | `if-else` | 条件简单且分支较少时 | | `switch` | 多分支选择,代码更简洁 | | `for` | 已知循环次数(如遍历数组) | | `while` | 循环次数不确定,先判断后执行 | | `do-while` | 至少执行一次循环体,再判断条件 | 通过合理使用分支循环语句,可以灵活控制代码的执行路径,解决复杂逻辑问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Helloword先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值