选择结构

选择结构

选择结构和循环结构可以用来界定一个语言到底是不是编程语言

目标:

1:了解流程控制语句
2:掌握基础if选择结构
3:掌握互斥if选择结构
4:掌握多重if选择结构
5:掌握嵌套if选择结构
6:掌握switch选择结构(前期控制台阶段用的多)

流程控制语句

就是用来实现对程序的执行流程进行控制的一种语句(自上而下执行、转向、分支…)

  • 顺序流程:程序默认的就是这种语句,自上而下执行。
  • 选择结构:出现分支的情况。
// 条件:韩迪的Java成绩高于90分,则孙雨雷嫁给他(三目运算符),否则就分手。
// 导入Scanner
import java.util.Scanner;
public class Demo1 {
	public static void main(String[] args) {
		//创建对象
		Scanner input = new Scanner(System.in);
		System.out.print("韩迪的分数是:");
		double num = input.nextDouble();
		String result =(num >= 90) ? "孙雨雷嫁给他!" : "分手!";
		System.out.println(result);
	}
}
  • 循环结构:选择执行的情况。

选择结构:

学习选择结构的原因:

1:使用三元运算符只能解决简单的判断情况

2:如果出现了复杂的业务处理,我们需要更多的解决方案

基础if选择结构的语法:

// 条件表达式的结果必须是布尔型(true或者false)
if(条件表达式){
    // 如果条件成立 那么立刻执行
}

互斥if选择结构:

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

案例:

// 案例:韩迪的Java成绩高于90分,则孙雨雷嫁给他(if)反之则分手
//导入Scanner
import java.util.Scanner;
public class Demo1 {
	public static void main(String[] args) {
		// 创建对象
		Scanner input = new Scanner(System.in);
		// 输出文字
		System.out.print("韩迪的分数是:");
		double score = input.nextDouble();
		// 执行循环
		if(score >= 90) {
			System.out.println("孙雨雷嫁给他!");
		}else {
			System.out.println("分手!");
		}
	}
}

多重if选择结构:

多重if表达式:

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

案例:

/*
要求:考试成绩
大于80:优秀
大于60:良好
小于60:蒂花之秀
用多重if选择结构
*/
//导入Scanner
import java.util.Scanner;
public class Demo1 {
	public static void main(String[] args) {
		// 创建对象
		Scanner input = new Scanner(System.in);
		// 输出文字
		System.out.print("分数是:");
		double score = input.nextDouble();
		// 执行循环
		if(score >= 80 && score <= 100) {
			System.out.println("优秀!");
		}else if(score >= 60){
			System.out.println("良好!");
		}else {
			System.out.println("蒂花之秀!");
		}
	}
}
注意事项:
  • 多重if中的else if必须配合if使用,不能单独出现。它可以出现多次
  • 多重if中的可选添加else代码块
  • 多重if中代码是自上而下执行判断的,只要有一个条件满足,其余的条件就不再执行(范围大的放在上面)

嵌套if选择结构(非Java if结构必修语法)

案例

/*
需求:中秋节回老家
1.买票
2.检票
3.安检
*/
//导入Scanner
import java.util.Scanner;
public class Demo1 {
	public static void main(String[] args) {
		// 创建对象
		Scanner input = new Scanner(System.in);
		// 输出文字
		System.out.print("是否带钱了(1:带了,2:没带):");
		int money = input.nextInt();
		// 执行循环
		if( money == 1) {
			System.out.println("请检票!");
			System.out.print("请出示票(1:可以出示,2:出示不了):");
			int ticket = input.nextInt();
			if(ticket == 1) {
				System.out.println("去安检!");
				System.out.print("你带的刀有多长(cm):");
				int knifeLong = input.nextInt();
				if(knifeLong > 9) {
					System.out.println("滚去警察局!");
				}else {
					System.out.println("快上车!");
				}
			}else if(ticket == 2) {
				System.out.println("再去买!");
			}else {
				System.out.println("说人话!");
			}
			
		}else if(money == 2){
			System.out.println("回家拿钱!");
		}else {
			System.out.println("请说人话!");
		}
	}
}

注意事项:
  • 嵌套if可以无限嵌套,只要需求需要可以继续编写
  • 嵌套if建议最好不超过3层,层级越多则容易造成代码阅读困难。
  • 嵌套if,随意嵌套if语法(包含基础、互斥、多重)

练习:

/*
需求:参加计算机大赛
一等奖:参加夏令营
二等奖:奖励个锤子手机
三等奖:奖励个锤子耳机
选择更优的if选择,本案例采用多重if更佳
*/
import java.util.Scanner;
public class Demo1 {
	public static void main(String[] args) {
		// 创建对象
		Scanner input = new Scanner(System.in);
		// 输出文字
		System.out.print("分数是:");
		double score = input.nextDouble();
		// 执行循环
		if(score > 90 && score <= 100) {
			System.out.println("一等奖!可以参加夏令营!");
		}else if(score > 80){
			System.out.println("二等奖!奖励个锤子手机");
		}else if(score > 70){
			System.out.println("三等奖!奖励个锤子耳机");
		}else {
			System.out.println("宁配吗?");
		}
	}
}

掌握switch选择结构

前期做等值判断建议用switch!!
switch(表达式){
    case 常量1;
    		//代码
    	break;
    case 常量2;
   		    //代码
    	break;
    case 常量3;
    		//代码
    	break;
    default:
    		//默认情况
    	break;
}

注意事项:

  • switch实现的功能和多重if一样,但是switch只能处理等值判断(无法实现范围判断)
  • switch中break语句必须添加,否则会出现case穿透性
  • switch中的表达式,只允许出现整数int(int byte short)(char也可以但是比较特殊)、字符串String、枚举类型Enum。
  • switch中的case后接的是常量。(例如:1 2 3 )。
  • switch中建议添加default语句!
    switch严格来讲性能比多重if要好一些。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值