Java选择结构与变量

一、基本if选择结构

  1. 语法:if(布尔表达式){ //代码块 } ==》对布尔表达式进行判断,为true执行代码块,为false跳过代码块
  • class Demo03 {
    	public static void main(String[] args) {
    		System.out.println("Hello World!");
    		
    		// 判断一把刀是不是管制刀具
    		int knifeLen = 155;
    
    		if(knifeLen >= 220){
    			System.out.println("这个刀子是管制刀具,要没收...");
    		}
    
    		if(knifeLen < 220){
    			System.out.println("这个刀子不是管制刀具,可以携带...");
    		}
    	}
    }

二、if...else选择结构

  1. 语法:if(判断条件){  代码块1 } else{ 代码块2 }==》对布尔值进行判断,为true执行代码块1,为false执行代码块2
  • class Demo04 {
    	public static void main(String[] args) {
    		System.out.println("Hello World!");
    		int knifeLen = 150;
    
    		// if...else
    		if (knifeLen >= 220){
    			System.out.println("管制刀具");
    		}else{
    			System.out.println("非管制刀具");
    		}
    	}
    }
    

三、多重if选择结构

  1. 语法:if(布尔表达式1){代码块1}else if(布尔表达式二){代码块2}else if(布尔表达式3){代码块3}else{代码块4}==》表达式1为true则不往下执行,为false则依次判断表达式2、表达式3,表达式都为false则执行代码块4
  • import java.util.Scanner;
    class Demo07 {
    	public static void main(String[] args) {
    		/*
    			键盘录入一个数字(1--7),输出对应日期需要上课的课程
    			1、导入Scanner
    			2、创建Scanner对象
    			3、提示输入日期1--7
    			4、获取日期
    			5、使用if判断,输出这一天需要上的课程
    		*/
    		
    		Scanner in = new Scanner(System.in);
    	
    		System.out.println("请输入查询星期几的课程(1--7)");
    		int day = in.nextInt();
    
    		// 5、使用if判断,输出这一天需要上的课程
    
    		if(day == 1){
    			System.out.println("今天是星期一,需要上语文课.");
    		} else if(day == 2){
    			System.out.println("今天是星期二,需要上数学课.");
    		} else if(day == 3){
    			System.out.println("今天是星期三,需要上英语课.");
    		} else if(day == 4){
    			System.out.println("今天是星期四,需要上体育课.");
    		} else if(day == 5){
    			System.out.println("今天是星期五,需要上语文课.");
    		} else if((day == 6) || (day == 7)){
    			System.out.println("今天是星期" + day + ",需要休息.");
    		} else{
    			System.out.println("您查询的课程不存在...");
    		}
    	}
    } 

四、嵌套if选择结构

  1. 语法:if(外层表达式){ if(内层表达式){//内层代码块1}else{//内层代码块2} }else{ //外层代码块}==》外层表达式为true在判断内层表达式,外层为false则直接输出外层代码块
  2. 注意:一个选择结构中,可嵌套另一个选择结构==》嵌套正确的情况下,支持任意组合
  • import java.util.Scanner;
    class Demo10 {
    	public static void main(String[] args) {
    		/*
    			模拟乘坐火车检票安检的过程
    		*/
    
    		Scanner in = new Scanner(System.in);
    
    		System.out.println("请出示你的车票(1=有票,0=无票):");
    		int ticket = in.nextInt();
    
    		// 判断有没有车票,如果有就可以去安检
    		if(ticket>=1){
    			// 提示输入安检情况
    			System.out.println("有没有携带违禁物品(true=有,false=无):");
    			boolean isDanger = in.nextBoolean();
    			// 判断安全情况
    			if(isDanger){
    				System.out.println("请跟我走一趟....");
    			}else{
    				System.out.println("安检通过,请排队候车...");
    			}
    
    		}else{
    			// 无票,提示去买票
    			System.out.println("请先去购买车票...");
    		}
    	}
    }

五、分支结构

  1. 语法:switch(变量|表达式){  case 值1:逻辑代码1;case值2:逻辑代码2;case值n:逻辑代码n  default:  为满足时的逻辑代码   } ==》输入值相应的数值,返回对应的逻辑代码块,若没有对应的值则返回default内容
  2. 注意:当匹配的case执行后,不会自动退出整个结构,而是继续向下执行。 break关键字可在匹配的case执行后,跳出整个结构
  • import java.util.Scanner;
    class Demo13 {
    	public static void main(String[] args) {
    		/*
    			根据星期几输出上课的内容
    			1、导入Scanner
    			2、创建Scanner对象
    			3、提示输出星期几day
    			4、获取输入的值
    			5、使用switch判断输出课程内容
    
    		*/
    	
    		Scanner in = new Scanner(System.in);
    		System.out.println("请输入今天是星期几(1--7):");
    		int day = in.nextInt();
    
    		// 5、使用switch判断输出课程内容
    		switch(day){
    			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;
    		}
    	}
    }

六、比较if和switch

import java.util.Scanner;
class Demo15 {
	public static void main(String[] args) {
		/*
			0 --59	不及格
			60--69	及格
			70--79	一般
			80--89	良好
			90--100	优秀
		*/

		Scanner in = new Scanner(System.in);
		System.out.println("请输入考试成绩(0--100):");
		int score = in.nextInt();
		
		if((score<0) || (score>100)){
			System.out.println("错误的分数");
		}else{
			// 合法的分数
			if(score >= 90){
				System.out.println("成绩优秀");
			} else if(score >= 80){
				System.out.println("成绩良好");
			} else if(score >= 70){
				System.out.println("成绩一般");
			} else if(score >= 60){
				System.out.println("刚刚及格");
			} else{
				System.out.println("不及格,体验一下男女混合双打...");
			}
		}
	}
}

总结:

  • if中的判断条件可以使等于某个具体的值,也可以是一个范围

    • month==3

    • score>=90

  • switch中case后面的值只能是byte,short、int、char、String范围内的值

    • 无法使用范围进行操作,数字范围过大,或者内容不确定且情况复杂的时候不能使用switch

    • 数值较少,内容固定的情况下可以使用switch

    • 常量的判定推荐使用switch

七、局部变量

  1. 概念:
    • 定义在方法中的变量
    • 使用前必须先赋值---没有默认值
    • 作用范围只在当前方法里面
    • 在同一作用域中变量名字不能重复
    • 声明周期是从创建到方法结束
  • class Demo16 {
    	
    	public static void main(String[] args) {
    		/*
    			定义位置在方法中
    			使用前必须先赋值---没有默认的值
    			作用范围只在当前方法里面
    			在同一个作用域中变量名字不能重复
    			生命周期是从创建到方法结束
    		*/
    		int age = 20;
    		System.out.println("age=" + age);
    
    		// int age = 22;
    		// show();
    		age = 33;
    	}
    
    	public static void show() {
    
    		System.out.println("age=" + age);
    	}
    }
posted @ 2020-09-06 16:40  MyHours  阅读(209)  评论(0编辑  收藏  举报