java流程控制-分支控制

发布时间 2023-12-08 17:23:03作者: 测试开发孵化园

免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动

1.分支控制

让程序有选择的去执行,分支控制有三种

单分支 if

双分支 if-else

多分支if-else if-...else

1.1 单分支 if

基本语法

if(条件表达式){

  执行代码块(可以有多条语句)

}

说明:当条件表达式为true时,就会执行{}的代码,如果为false,就不执行

特别说明:如果{}中只有一条语句则可以不用{},为了代码可读性,建议加上{}

public class If01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入你的年龄:");
        int age=sc.nextInt();
        if(age>=18){
            System.out.println("你的年龄大于或等于18岁,可以进入网吧");
        }
    }
}

1.2 双分支 if-else

 

public class If01 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入你的年龄:");
        int age=sc.nextInt();
        if(age>=18){
            System.out.println("你的年龄大于或等于18岁,可以进入网吧");
        }else{
            System.out.println("你还是未成年,不能进入网吧");
        }
    }
}

1.3 多分支 if-else if...-else

 多分枝流程图

 1 public class If02 {
 2     public static void main(String[] args) {
 3         /*
 4          * 输入个人成绩
 5          * 成绩为(90-100)分时,输出 成绩优秀
 6          * 成绩为(80-89)分时,输出,成绩良好
 7          * 成绩为(70-79)分时,输出,成绩中等
 8          * 成绩为(60-69)分时,输出,成绩及格
 9          * 其他情况 输出 成绩不及格
10          * */
11 
12         Scanner sc=new Scanner(System.in);
13         System.out.print("请输入你的个人成绩(0-100):");
14         int score=sc.nextInt();
15         if(score>=0 && score<=100){
16             if(score>=90 && score<=100) {
17                 System.out.println("成绩优秀");
18             }else if(score>=80 && score<=89){
19                 System.out.println("成绩良好");
20             }else if(score>=70 && score<=79){
21                 System.out.println("成绩中等");
22             }else if(score>=60 && score<=69){
23                 System.out.println("成绩及格");
24             }else{
25                 System.out.println("成绩不及格");
26             }
27         }else{
28             System.out.println("个人成绩分数需要在0-100,请重新输入");
29         }
30     }
31 }

1.3 嵌套分支

在一个分支结构中有完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。分支最好不要超过三层

基本语法:

public class If03 {
    public static void main(String[] args) {
        /*
        * 参加比赛。如果积分大于等于70可以进入世界赛
        * 否则提示:很抱歉,您的队伍没有参加世界上的资格。并且根据排名提示
        * 1 欢迎1号种子进入世界赛
        * 2 欢迎2号种子进入世界赛
        * 3 欢迎3号种子进入世界赛
        * 4 欢迎4号种子进入世界赛
        * 其他 很抱歉。输入错误
        * */
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入您队伍的积分,查询是否有资格参加世界赛的资格:");
        int score=sc.nextInt();
        if(score>=70){
            System.out.print("请输入你队伍的排名:");
            int level=sc.nextInt();
            if(level==1){
                System.out.println("欢迎1号种子进入世界赛");
            }else if(level==2){
                System.out.println("欢迎2号种子进入世界赛");
            }else if(level==3){
                System.out.println("欢迎3号种子进入世界赛");
            }else if(level==4){
                System.out.println("欢迎4号种子进入世界赛");
            }else {
                System.out.println("很抱歉,排名输入错误!");
            }
        }else{
            System.out.println("很抱歉,您的队伍没有参加世界上的资格");
        }
    }
}

1.3 switch分支结构

基本语法:

 说明:

  1. swtich,关键字,表示switch分支
  2. 表达式对应一个具体的值
  3. case常量1:当表达式的值等于常量1,就执行语句块1
  4. break:表示退出switch
  5. 如果和case常量1匹配,就执行语句块1,如果没有匹配就继续匹配case常量2
  6. 如果都没有匹配商,执行default

 流程图:

 1 public class Switch01 {
 2     public static void main(String[] args) {
 3         /*参加世界赛,并且根据排名提示
 4          * 1 欢迎1号种子进入世界赛
 5          * 2 欢迎2号种子进入世界赛
 6          * 3 欢迎3号种子进入世界赛
 7          * 4 欢迎4号种子进入世界赛
 8          * 其他 很抱歉。您输入的排名不能进入世界赛
 9          * */
10         Scanner sc=new Scanner(System.in);
11         System.out.print("请输入您队伍的积分排名:");
12         int level=sc.nextInt();
13 
14         switch(level){
15             case 1:
16                 System.out.println("欢迎1号种子进入世界赛");
17                 break;
18             case 2:
19                 System.out.println("欢迎2号种子进入世界赛");
20                 break;
21             case 3:
22                 System.out.println("欢迎3号种子进入世界赛");
23                 break;
24             case 4:
25                 System.out.println("欢迎4号种子进入世界赛");
26                 break;
27             default:
28                 System.out.println("很抱歉,您输入的排名不能进入世界赛!");
29         }
30     }
31 }

注意事项:

  1. 表达式数据类型,应和case后的常量类型保持一直,或者可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
  2. switch(表达式)中表达式的返回值必须是(byte,short,int,char,enum[枚举],String)
  3. case子句中的值必须是常量,而不能是变量
  4. default子句是可选的,当没有匹配的case时,执行default
  5. break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break
 1 public class Switch02 {
 2     public static void main(String[] args) {
 3         //根据输入的月份打印季节,
 4         // 3,4,5春季 6,7,8 夏季 9 10 11 秋季 12,1,2冬季
 5         Scanner sc=new Scanner(System.in);
 6         System.out.print("请输入月份:");
 7         int month=sc.nextInt();
 8 
 9         switch(month){
10             case 3:
11             case 4:
12             case 5:
13                 System.out.println("这是春季");
14                 break;
15             case 6:
16             case 7:
17             case 8:
18                 System.out.println("这是夏季");
19                 break;
20             case 9:
21             case 10:
22             case 11:
23                 System.out.println("这是秋季");
24                 break;
25             case 12:
26             case 1:
27             case 2:
28                 System.out.println("这是冬季");
29                 break;
30             default:
31                 System.out.println("月份输入错误");
32         }
33     }
34 }

switch和if比较:

  1. 如果判断的具体数值不多,而且符合byte,short,int,char,enum[枚举],String这6种类型。虽然两个语句都可以使用,建议使用switch
  2. 其他情况:对区间判断,对结果为boolean类型判断,使用if。if的使用范围更广泛