分支结构-

程序控制流程

顺序控制流程一般分为三种:循序结构、分支结构、循环结构

一、循序结构

不加任何控制,代码从main方法开始自上而下

二、分支结构
1.if分支

对条件进行判断,判断结果值可能有两个值true或者false,然后根据条件判断的结果来决定执行代码。

  • if的第一种形式
    if (条件表达式){
        代码;
    }
    double temp = 38;
    if(temp>37){
        System.out.println("这个人体温不正常");
    }
    System.out.println("代码剩余部分");
    
  • if的第二种形式
    if(条件表达式){
        代码;
    }else{
        代码2;
    }
    public static void main(String[] args){
        System.out.println("我要开始发红包了");
        double balance =88;
        if (balance>90){
            balance-=90;
            System.out.println("你的余额是" +balance);
        }else{
            System.out.println("余额不足")}
        System.out.println("继续执行main方法")}
    
  • if的第三种形式
    if(条件表达式1){
        代码1}else if(条件表达式2){
        代码2;
    }else if(条件表达式3){
        代码3;
    }else{
        代码n;
    // 需求3:某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。[0,60) D
    [60,80) C [80,90) B [90,100] A
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入员工打分成绩");
    double score = sc.nextDouble();
    // 需求3:某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。
    [0,60) D [60,80) C [80,90) B [90,100] A
    if (score >= 0 && score < 60) {
    System.out.println("员工绩效级别:D");
    } else if (score < 80) {
    System.out.println("员工绩效级别:C");
    } else if (score < 90) {
    System.out.println("员工绩效级别:B");
    } else if (score <= 100) {
    System.out.println("员工绩效级别:A");
    } else {
    System.out.println("你输入的成绩不合理");
    }
    System.out.println("继续执行main方法");
    }
    

条件1为真执行代码1,然后if语句结束否则执行条件2,如果为真执行3,然年if语句结束判断后续条件,如果前面添加都为false,执行else下面代码。

2.switch分支
switch(表达式){
case值1;
执行代码;
break;
....
case值n-1;
执行代码;
break;
default:
执行代码n;
}
  • 先执行表达式的值,再拿着这个值与case的值去匹配。
  • 与其中相匹配的case后的值为true就执行相应代码,遇到break就跳出相应分支。
  • 如果与所有case的值都不匹配就执行default块的代码。

switch的注意事项

  1. 他的表达类型只能是byte、short、int、char;jdk5开始支持枚举,jdk1.7、java7开始支持String,不支持double、float等。
  2. case给出的值不允许重复,而且只能是字面量,不能是变量。
  3. case执行时一定要使用break,否则会一直执行直接穿透下一个case语句执行直到遇到下一个break。
  4. case后面的值只能是字面量不能是变量。(字面量是一个固定的值无变化)
2.1switch分支新特性
  • 箭头表达式(可以不用break语句)
 public static void main(String[] args) {
// 先输入年份,在输入一个月份,返回这个月多少天
// 31 30 29 28 31 1,3,5,7,8,10,12 30 4, 6 , 9, 11 2 闰年
29天 平年 28Scanner sc = new Scanner(System.in);
System.out.println("请输入一个年份:");
int year = sc.nextInt();
System.out.println("请输入一个月份:");
int month = sc.nextInt();
// int temp = 12;
// switch 新特性 -> 箭头表达式
int days = 0;
switch (month) {
case 1, 3, 5, 7, 8, 10, 12 -> days = 31;
case 4, 6, 9, 11 -> days = 30;
case 2 -> {
// 判断 year 是否是闰年
if (year % 4 == 0 && year % 100 != 0 || year % 400 ==
0) {
days = 29;
} else {
days = 28;
}
}
default -> days = -1;
}
if (days == -1) {
System.out.println("输入的月份不正确");
} else {
System.out.println("这个月" + days + "天");
}
// System.out.println(days == -1 ? "输入的月份不正确" :
"这个月" + days + "天");
}
  • yield大多时候,在switch表达式内部,我们会返回简单的值,但是如果需要复杂语句也可以写很多语句放在{…}然后用yield返回一个值作为switch语句的返回值。
import java.util.Scanner;
pubilc class Main{
public static void main(String[] args){
Scanner input= new Scanner(System.in);
    System.out.println("请输入成绩");
    int score = input.nextInt();
    String level=switch(score/10){
            case 10,9->{
                String result="A,你是非常棒的";
                yield result;
            }
            case 8->"B";
            case 7->"C";
            case 6->"D";
            default ->"E";
    };
    System.out.println("你的成绩等级为:"+level);
}
}
//case匹配多个值;把相同逻辑的case放在一起,最后一个case写逻辑即可,在Java12中,可以使用多个逗号来分开多个值。
3.if、switch如何选择

如果是对一个范围进行判断,建议使用if分支结构

如果是一个一个的值比较的时候,建议使用switch分支结构
等级为:"+level);
}
}
//case匹配多个值;把相同逻辑的case放在一起,最后一个case写逻辑即可,在Java12中,可以使用多个逗号来分开多个值。


##### 3.if、switch如何选择

> 如果是对一个范围进行判断,建议使用if分支结构
>
> 如果是一个一个的值比较的时候,建议使用switch分支结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值