Java执行语句-分支语句

一、Java的执行语句

  1. 分类:

    1.1 顺序语句:方法里的代码从上往下执行

    1.2 分支语句:条件成立就执行对应的功能

    ​ 1.2.1 if

    ​ 1.2.2 switch

    1.3 循环语句:只要条件成立,就重复性的执行某个功能

    ​ 1.3.1 for

    ​ 1.3.2 while

    ​ 1.3.3 do-while

    1.4 特殊的流程控制语句

    ​ 1.4.1 break

    ​ 1.4.2 continue

    ​ 1.4.3 return

    ​ 1.4.4 label

二、if分支语句

  1. 简单的if分支

1.1 语法结构:

  				if(表达式){

  						···代码块···
  		}  ​				

​ 1.2 理解:表达式的结果必须是boolean类型

​ true–执行代码块

​ false–跳过if分支,执行if以外的 代码块

​ 1.3 做实验

public class MyTest02{
	
	public static void main(String[] args){
		if(true){
			System.out.println("···代码块····");
		}
	}
}

​ 1.4 案例:

​ 如果麻生希的java成绩大于98分,麻生希就能获得一辆法拉利做为奖励

代码如下:

import java.util.Scanner;
public class MyTest03{
	
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入麻生希的考试成绩:");
		double score = scan.nextDouble();
		if(score>98){
			System.out.println("奖励麻生希一辆法拉利模型玩具");
		}
	}
}

​ 小结:if{}要么进入,要么要不进入
​ 2.复杂的if分支语句

​ 案例一:

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

 import java.util.Scanner;
 public class MyTest04{
	 
	 public static void main(String[] args){
		 
		 Scanner scan = new Scanner(System.in);
		//输入体重值和身高值
		System.out.println("请输入身高(kg):");
		double height = scan.nextDouble();
		System.out.println("请输入体重(m):");
		double weight = scan.nextDouble();
		//计算健康值
		double health = weight/(height*height);
		//判断健康值范围
		if(health>=20 && health<=25){
			System.out.println("小护士说:\"您的身体健康,请继续保持\"");
		}
	 }
 }

​ 案例二:

​ 麻生希Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他

import java.util.Scanner;
	public class MyTest05{
	public static void main(String[] args){
	//输入成绩
	Scanner scan = new Scanner(System.in);
	System.out.println("请输入音乐成绩");
	double musicScore = scan.nextDouble();
	System.out.println("请输入Java成绩");
	double javaScore = scan.nextDouble();
	//判断成绩
	if(javaScore>98 && musicScore>80 ||javaScore>=100 && musicScore>70){
		System.out.println("老师奖励麻生希一辆法拉利模型玩具");
	}
	}
}

​ 小结:if可以判断区间

​ if可以判断复杂的条件
3. if…else…
3.1 语法结构:

​							if(表达式){

​							...代码块...

​							}else{

​							...else代码块...

​							}

​ 3.2 理解:

​ 表达式的结果必须是boolean

​ true–执行代码块

​ false–执行else代码块

​ 3.3 做实验

public class MyTest06{
	public static void main(String[] args){
		if(false){
			System.out.println("...代码块...");
		}else{
			System.out.println("...else代码块...");
		}
		System.out.println("if分支以外的代码");
	}
}
  1. 多重if分支

    4.1 语法结构:

    ​ if(表达式1){

    ​ …代码块1…

    ​ }else if(表达式2){

    ​ …代码块2…

    ​ }else if(表达式n){

    ​ …代码块n…

    ​ }else{

    ​ …else代码块…

    ​ }

    4.2 理解:

    ​ 从上往下判断表达式,哪个表达式先为true,就执行对应的代码块

    如果都不为true,就执行else代码块

    4.3 注意:

    else代码块根据需求可写可不写,不影响语法规则

    4.4 做实验

    public class MyTest11{
    	public static void main(String[] args){
    		if(false){
    			System.out.println("...代码块1...");
    		}else if(false){
    			System.out.println("...代码块2...");
    		}else if(false){
    			System.out.println("...代码块3...");
    		}else{
    			System.out.println("...else代码块...");
    		}
    	}
    }
    

    4.5 案例

    ​ 4.5.1 案例一

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

    import java.util.Scanner;
    public class MyTest12{
    	
    	public static void main(String[] args){
            //输入身高和体重
    		Scanner scan = new Scanner(System.in);
    		System.out.println("请输入体重(kg):");
    		double weight = scan.nextDouble();
    		System.out.println("请输入身高(m):");
    		double height = scan.nextDouble();
    		//计算健康值
    		double health = weight/(height*height);
    		//判断健康值
    		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("小护士说:\"健康值异常,请到医院进行详细检查\"");
    		} 
    		
    	}
    }
    

    ​ 4.5.2 案例二

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

    import java.util.Scanner;
    public class MyTest13{
    	
    	public static void main(String[] args){
    		//录入学生成绩
    		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("成绩异常");
    		}
    	}
    }
    

    ​ 小结:多选一的情况下使用多重if分支

  2. 嵌套if分支

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

    import java.util.Scanner;
    public class MyTest07{
    	public static void main(String[] args){
    		
    		Scanner scan = new Scanner(System.in);
    		System.out.println("请输入成绩:");
    		int score = scan.nextInt();
    		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 if(score>=16){
    			System.out.println("被淘汰了,重在参与");
    		}else{
    			System.out.println("成绩异常");
    		}
    	}
    }
    

    小结:

    ​ if允许无限层嵌套

    ​ 项目中if最好嵌套不超过3曾,因为超过3层后代码可读性会很低

三、switch分支语句

  1. switch分支的使用

    1.1 语法结构:

    switch(表达式){
    case 值1://case和值1中间不要有空格!!否则会报错
    …代码块1…
    break;
    case 值2:
    …代码块2…
    break;
    case 值n:
    …代码块n…
    break;
    default:
    …default代码块…
    break;
    }

    1.2 理解:

    ​ 表达式的结果分别与值1、值2、值n比较,

​ 哪个相同就执行对应的代码块

​ 如果都不相同就执行default代码块

​ default代码块根据需求可写可不写,不影响语法规则

​ break表示跳出整个switch分支

​ 1.3 做实验

public class MyTest08{
	
	public static void main(String[] args){
		
		switch(500){
			case 50:
			System.out.println("50");
			break;
			case 100:
			System.out.println("100");
			break;
			case 150:
			System.out.println("150");
			break;
			default:
			System.out.println("default代码块");
			break;
		
		}
		System.out.println("switch分支以外的代码...");
	}
}

​ 1.4 案例:

​ 小西满里惠参加计算机编程大赛
​ 如果获得第一名,将参加千锋组织的1个月马尔代夫旅游
​ 如果获得第二名,将奖励苹果Pro笔记本电脑一部
​ 如果获得第三名,将奖励移动硬盘一个
​ 否则,何老师晚上给小西满里惠通宵补课

import java.util.Scanner;
public class MyTest09{
	public static void main(String[] args){
		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;
		}
	}
}

​ 小结:switch只要是判断单个值是否相同
2. switch分支的深入

2.1 面试题

​ 2.1.1 case的值可以相同吗?

​ 不允许

​ 2.1.2 default可以省略吗?

​ 可以

​ 2.1.3 break可以省略吗?

​ 可以

​ 2.1.4 default的位置一定要在最后吗?

​ 不一定,但是最好放在最后,因为考虑到代码可读性

​ 2.1.5 表达式值的类型可以是什么?(面试经常问!!)

​ byte、short、int、char、字符串(JDK1.7)、枚举(JDK1.5)

​ 2.1.6 switch底层判断数据的逻辑是什么?

​ switch底层是比较int值是否相同

​ byte–>int自动转型

​ short–>short自动转型

​ int–>int直接使用

​ char–>int获取字符的码值

​ 字符串–>获取字符串的hash值(“abc” -> [‘a’,‘b’,‘c’] -> [97,98,99] -> 通过字符的码值+hash算法获取出的hash值)

​ 枚举 --> int 获取枚举类里的对象编号(对象编号从0开始,对象编号是int类型)

2.2 练习题:输入年和月,输出当月的天数

分析:
1、3、5、7、8、10、12月 – 31天
4、6、9、11月 – 30天
2月 – 平年28天、闰年29天(年份被4整除并且年份不被100整除 或者 年份被400整数 就是闰年)

方法一:

import java.util.Scanner;
public class MyTest10{
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = scan.nextInt();
			System.out.println("请输入月份:");
		int month = scan.nextInt();
		>if(month==1||month==3||month==5||month==7||month==8||month==10||m>onth==12){
				System.out.println("31天");
			}else if(
		month==4||month==6||month==9||month==11){
				System.out.println("31天");
			}else if(month==2){
				if(year%4==0 && year%100!=0||year%400==0){
				System.out.println("29天");
				}else{
				System.out.println("28天");
				}
				
			}else{
				System.out.println("输入异常");
			}
		}
}
  • 39
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值