控制语句之选择结构(分支结构)

(一)选择结构
   ①if,if..else
   ②switch
   1.if语句
   1.1    if语句四种结构:
    结构一:
        if(布尔表达式){
           java语句
           java语句
           ...
        }
   结构二:
       if(布尔表达式){
           java语句
           java语句
           ...
       }else{
           java语句
           java语句
           ...
       
       }
   结构三:
       if(布尔表达式){
           java语句
           java语句
           ...
       }else if(布尔表达式){
           java语句
           java语句
           ...
       }else if(布尔表达式){
           java语句
           java语句
           ...
       }
   
   结构四:
       if(布尔表达式){
           java语句
           java语句
           ...
       }else if(布尔表达式){
           java语句
           java语句
           ...
       }else if(布尔表达式){
           java语句
           java语句
           ...
       }else{
           java语句
           java语句
           ...
       }
   【注意】以上的第二种形式和第四种形式都带有else分支,这两种方式可以100%保证会有分支执行。
   
   
   1.2 重点:对于java语句中的if语句来说,只要有一个分支执行,整个if语句全部结束。
   1.3 "所有的控制语句都可以嵌套使用"。嵌套使用的时候要保证代码格式完美
   1.4 if语句的分支中只有一条java语句的话,大括号可以省略不写(不推荐这么写)。

import java.util.Scanner;
public class Test{
	
	public static void main(String[] args){
		
		char grade[] = {'A','B','C','D','E'}; 
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的分数:");
		int input = sc.nextInt();
		if(input > 100 | input < 0){
			System.out.println("请输入的分数格式有误");
		}else{
			if (input>=90){
				System.out.println("您的成绩等级为:"+grade[0]);
			}else if(input>=80){
				System.out.println("您的成绩等级为:"+grade[1]);
			}else if(input>=70){
				System.out.println("您的成绩等级为:"+grade[2]);
			}else if(input>=60){
				System.out.println("您的成绩等级为:"+grade[3]);
			}else{
				System.out.println("您的成绩等级为:"+grade[4]);
			}
		}	
	}
}

  

【练习二】
代码如下:
import java.util.Scanner;
public class Test{
	
	public static void main(String[] args){
		
		System.out.println("提示信息:0表示晴天,1表示下雨;0表示男,1表示女");
		String weather[] = {"晴天","下雨"};
		String gender[] = {"男","女"};
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入天气:");
		String input_weather = sc.next();
		if(input_weather.equals(weather[0])){
			System.out.print("请输入性别:");
			String input_gender = sc.next();
			if(input_gender.equals(gender[0])){
				System.out.println("出门不用带伞!");
			}else{
				System.out.println("出门记得带遮阳伞!");
			}
		}else{
			System.out.println("出门记得带雨伞!");
		}
	}
}

   2.switch
        2.1 switch语句也属于选择结构,也是分支语句
        2.2 switch语句的语法结构:
            一个完整的switch语句应该这样编写:
            switch(int或String类型的字面值或变量){
                case int或String类型的字面值或变量:
                    java语句;
                    ...
                    break;
                case int或String类型的字面值或变量:
                    java语句;
                    ...
                    break;
                case int或String类型的字面值或变量:
                    java语句;
                    ...
                    break;
                ...
                default:
                    java语句;
                    ...
            }
        2.3 switch语句的执行原理:
             switch后面小括号当中的"数据"和case后面的"数据"进行一一匹配(按照自上而下的顺序依次匹配),匹配成功的分支执行。
        2.4 匹配成功的分支执行,分支当中最后有break语句的话,整个switch语句终止。
        2.5 匹配成功的分支执行,分支当中没有"break;"语句的话,直接进入下一个分支执行(不进行匹配),这种现象被称为case的穿透现象。【提供break语句可以避免穿透】
        2.6 所有分支都没有匹配成功,当有default语句的话,会执行default分支当中的程序。
        2.7 switch后面和case后面只能是int或者String类型的数据,不能是探测其他类型。
            当然byte、short、char也可以直接写到switch和case后面,因为他们可以进行自动类型转换。byte、short、char可以自动转换成int类型。
        2.8 case可以合并:

int i = 10;
switch(i){
    case 1: case 2: case 3: case 10:
	System.out.println("Test Code");
}

       

【练习一】
代码如下:
	import java.util.Scanner;
	public class Test{
		
		public static void main(String[] args){
			
			/*
				long x = 100L;
				switch(x){}		//编译报错
			*/
			
			//解决上述编译报错
			long x = 100L;
			switch((int)x){}
			
			byte b = 10;
			switch(b){}
			
			short s = 10;
			switch(s){}
			
			char c ='A';
			switch(c){}
			
			char cc = 97;
			switch(cc){}
			
			//编译报错
			//switch(true){}
			
			String username = "admin";
			switch(username){}
			
			/*
				较完整的switch语句
			*/
			/*
				接受用户的输入
				1 表示星期一
				2 表示星期二
				....
			*/
			Scanner sc = new Scanner(System.in);
			System.out.print("请输入星期对应的数字:");
			byte user_input = sc.nextByte();
			switch(user_input){
				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("您输入的数字不是合法的数字,请重新输入!");
			}
		}
	}

 

【练习二:case穿透 & case合并】
代码如下:

	import java.util.Scanner;
	public class Test{
		
		public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			System.out.print("请输入星期对应的数字:");
			byte user_input = sc.nextByte();
			switch(user_input){
				case 0: case 1:		//case合并
					System.out.println("今天是星期一");
				case 2: 
					System.out.println("今天是星期二");
				case 3: 
					System.out.println("今天是星期三");
				case 4: 
					System.out.println("今天是星期四");
				case 5: 
					System.out.println("今天是星期五");
				case 6: 
					System.out.println("今天是星期六");
				case 7: 
					System.out.println("今天是星期日");
				
			}
		}
	}  

  

【练习三:实现计算器简单计算】
/*
	实现计算器当中的:+、-、*、/、%
	实现思路:
		1、选择所有数据从键盘输入
		2、使用switch语句进行判断
		3、需要从控制台输入三次:
			①第一个数字
			②运算符
			③第二个数字
	最终在控制台上是这样的场景:
		欢迎使用简单计算器系统:
		请输入第一个数字:
		请输入运算符:
		请输入第二个数字:
		运算结果:
*/
代码如下:
	import java.util.Scanner;
	public class Test{
		
		public static void main(String[] args){
			
			Scanner sc = new Scanner(System.in);
			System.out.print("请输入第一个数字:");
			int first_num = sc.nextInt();
			System.out.print("请输入运算符:");
			String operator = sc.next();
			System.out.print("请输入第二个数字:");
			int second_num = sc.nextInt();	
			int result = 0;
			System.out.println("欢迎使用简单计算器系统!");
			switch(operator){
				case "+":
					result = first_num + second_num;
					System.out.println("运算结果:"+'\n'+first_num+" + "+second_num+" = "+result);
					break;
				case "-":
					result = first_num - second_num;          
					System.out.println("运算结果:"+'\n'+first_num+" - "+second_num+" = "+result);
					break;                                        
				case "*":                           
					result = first_num * second_num;         
					System.out.println("运算结果:"+'\n'+first_num+" * "+second_num+" = "+result);
					break;                                         
				case "/":  
					if(second_num == 0){
						System.out.println("您输入的除数不合法!");
					}else{
						result = first_num / second_num;          
						System.out.println("运算结果:"+'\n'+first_num+" / "+second_num+" = "+result);
					}
					break;	                                       
				case "%":                            
					result = first_num % second_num;          
					System.out.println("运算结果:"+'\n'+first_num+" % "+second_num+" = "+result);
					break;
				default :
					System.out.println("该系统只支持两个数字的加减乘除取余运算!");
			}
		}
	} 

  

【练习四:考生成绩评分练习】
代码如下:
	import java.util.Scanner;
	public class Test{
		
		public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			System.out.print("请输入考生的成绩:");
			double score = sc.nextDouble();
			int grade = (int) score/10;
			switch(grade){
				case 9: case 10:
					System.out.println("该考生的成绩为:A");
					break;
				case 8:
					System.out.println("该考生的成绩为:B");
					break;                                        
				case 7:                           
					System.out.println("该考生的成绩为:C");
					break;                                         
				case 6:  
					System.out.println("该考生的成绩为:D");
					break;	                                       
				case 5: case 4: case 3: case 2: case 1: case 0:                           
					System.out.println("该考生的成绩为:E");
					break;
				default :
					System.out.println("您输入的考生成绩不合法!");
			}
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值