Day_03选择结构

选择结构和循环结构可以界定一个语言是否是编程语言的标准

1.了解流程控制语句

流程控制语句:实现对程序的执行流程今次那个控制的语句。

  • 顺序流程: 程序默认的流程语句 (自上而下挨个执行)
  • 选择结构:(分支) 根据条件选择分支执行
  • 循环结构:根据条件进行循环执行

2.掌握基础if选择结构

学习结构的原因:

  1. 三元运算符只能解决简单的判断情况
  2. 如果出现了复杂的业务处理,我们需要更多的解决方案

基础if选择结构的语法

// 条件表达式的结果必须是true或false(布尔类型)
if(条件表达式){ // 条件成立执行  System.out.print();
	System.out.print();
}
// 花括号可以不写但是为了规范建议添加
if(条件表达式) 
	System.out.print();

例:

/*
 * 需求:Java考试能够大于90分 有奖励
 */
public class Demo {

	public static void main(String[] args) {
		// 创建对象
		Scanner input = new Scanner(System.in);
		System.out.print("请输入Java考试成绩:");
		double score = input.nextDouble();
		// 套语法
		if(score > 90) {
			System.out.println("有奖励!");
		
		}
		
		if(score <= 90) {
			System.out.println("没有奖励!");
		}
	}

}

使用逻辑运算符实现复杂的if处理:
例:

/*
 * 需求:
 * 	如果Java成绩大于90分,Go成绩大于80分 可以得奖
 * 	或者
 *  如果Java成绩考了100分,Go成绩只需要大于70分 也可以得奖
 */
public class Demo {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		// 提示输入Java成绩和Go成绩
		System.out.print("请输入Java成绩:");
		double javaScore = input.nextDouble();
		System.out.print("请输入Go成绩:");
		double goScore = input.nextDouble();
		
		// 伪代码:(Java成绩 > 90 && go成绩 > 80) ||  (Java成绩 == 100 && go成绩 > 70)
		// 套语法
		if((javaScore > 90 && goScore > 80) || (javaScore == 100 && goScore > 70)) {
			System.out.println("有奖励!");
		}
		// 反之
		if(!((javaScore > 90 && goScore > 80) || (javaScore == 100 && goScore > 70))) {
			System.out.println("没有奖励!");
		}
	}

}

3.掌握互斥if选择结构

if(条件表达式){
    // 条件成立执行的内容
}else{
    // 条件不成立执行的内容
}

例:

/*
 * 需求:Java考试能够大于90分 有奖励
 * 小于或等于则没有奖励
 */
public class Demo {

	public static void main(String[] args) {

		// 创建对象
		Scanner input = new Scanner(System.in);
		System.out.print("请输入Java考试成绩:");
		double score = input.nextDouble();
		
		// 套语法
		if(score > 90) {
			System.out.println("有奖励!");
		}else {
			System.out.println("没有奖励!");
		}
	}

}

4.掌握多重if选择结构

if(条件表达式1){
    // 成立代码
}else if(条件表达式2){
    // 成立代码
}else if(...){
    // ...
}else{ 
    // 如果上述条件都不满足 可以执行
}

例:

/*
 * 需求:
 * 考试成绩大于等于80为优秀
 * 考试成绩大于等于60为良好
 * 好事成绩小于60为差
 */
public class Demo {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		// 提示输入学生成绩
		System.out.print("请输入考试成绩:");
		double score = scan.nextDouble();
		
		// 套语法
		if(score >= 80) {
			System.out.println("优秀!");
		}else if(score >= 60) {
			System.out.println("良好!");
		}else {
			System.out.println("差!");
		}
	}

}

注意事项:

  • 多重if中的else if必须配合if使用,不能单独出现,它可以出现多次
  • 多重if中可选添加else代码块
  • 多重if中代码是自上而下执行判断的,只要有一个条件满足,其余的条件就不再执行(范围大的放在上方)

5.掌握嵌套if选择结构(非Java必修语法)

例:

/*
 * 需求:坐火车回家
 * 1.买票
 * 2.检票
 * 3.安检
 */
public class Demo {

	public static void main(String[] args) {
		System.out.println("正在买票中~~~");
		// 0无票 1有票
		int hasTicket = 1;
		// 不超过9cm就可以通过安检
		int lengthOfKnife = 8;
		
		System.out.println("正在检票中~~~");
		// 判断
		if(hasTicket == 1) { // 有票
			System.out.println("准备安检~~~");
			// 判断是否能通过安检
			if(lengthOfKnife < 9) {
				System.out.println("准备上车!");
			}else {
				System.out.println("这是通向幼儿园的车!你的刀不允许出现!");
			}
		}else { // 无票
			System.out.println("滴滴滴~~~无票乘客!");
		}
	}

}
  • 嵌套if可以无限嵌套,只要需求需要则可以继续编写
  • 嵌套if建议最好不超过3层,层级过多则容易导入代码阅读困难
  • 嵌套if,随意嵌套if语法(基础if、互斥if、多重if)

6.掌握switch选择结构

switch基本语法:

switch(表达式){
    case 常量1:
        // 代码
        break;
    case 常量2:
        // 代码
        break;
    case 常量....:
       	// 代码
        break;
    default:
        // 默认情况
        break;
}

注意事项:

  • switch实现的功能和多重if一样,但是switch只能处理等值判断情况。(无法实现范围判断)
  • switch中break语句必须添加,否则会出现case穿透性。
  • switch中的表达式,只允许出现 整数int(byte short char(特殊))、字符串String、枚举类型。
  • switch中的case后接的是常量(例如:1 2 3 “1” “2” "3 "… “星期一” “星期二”… 固定值<死值>)。
  • switch中建议添加default语句!

switch严格来讲性能比多重if要好一些。
例:

/*
 * 需求: 查看课程
 * 第一节课:语文
 * 第二节课:数学
 * 第三节课:英语
 */
switch(timeTable) {
    case 1:
    	    System.out.println("语文!");
  			  break;
    case 2:
    	    System.out.println("数学!");
  			  break;
   case 3:
    	    System.out.println("英语!");
  			  break;
    default:
        System.out.println("输入错误!");
        break;
}

还可以合理的利用case的穿透性:

switch(dayOfWeek) {
    case "星期一": // dayOfWeek.equals("星期一")
    case "星期二":
    case "星期三":
    case "星期四":
    case "星期五":
        System.out.println("好好学习!");
        break;
    case "星期六":
    case "星期日":
        System.out.println("好好休息!");
        break;
    default:
        System.out.println("非法星期输入!");
        break;
}

来自查老师课堂

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值