• Java基础之:分支(选择)控制语句


    Java基础之:分支(选择)控制语句

    首先介绍一下程序流程控制,分别是顺序控制,分支控制,循环控制。

    分支控制(if-else)

    分支控制可以分为三种(也可以是四种)分别是:单分支,双分支,多分支,(分支嵌套)。

    单分支:

    基本语法:

    if(条件表达式){
        执行代码块;(可以有多条语句)
    }

    说明:

    1. 当条件满足时,执行{}中的代码块。条件不满足则跳过{},直接执行后面的程序语句。

    2. 可以不使用{},用缩进来表示,但仅限于只有一条语句的情况下。

    简单案例:

    小黄和小范准备结婚,如果钱足够50w就结婚。

    import java.util.Scanner;
    public class Ifelse
    {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);//声明Scanner对象
            System.out.println("请输入现有资金(W):");
            int money = input.nextInt();//接收键盘输入
            //1.单分支
            if(money >= 50){
                System.out.printf("现有资金%dW,结婚花费50W,可以结婚!
    ",money);
                System.out.printf("结婚后剩余资金%dW
    ",money - 50);
            }
        }
    }
    

      

    双分支:

    基本语法:

    if(条件表达式){
        执行代码块1;(可以有多条语句)
    }else{
        执行代码块2;(可以有多条语句)
    }
    

      

    说明:

    1. 双分支结构,满足条件运行代码块1,若不满足条件运行代码块2。

    2. 与单分支相同,同样可以不使用{}。

    简单案例:

    小黄和小范准备结婚,如果钱足够50w就结婚,否则就不结婚。

    import java.util.Scanner;
    public class Ifelse
    {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);//声明Scanner对象
            System.out.println("请输入现有资金(W):");
            int money = input.nextInt();//接收键盘输入
    //      2.双分支
            if(money >= 50){
                System.out.printf("现有资金%dW,结婚花费50W,可以结婚!
    ",money);
                System.out.printf("结婚后剩余资金%dW
    ",money - 50);
            }else{
                System.out.printf("现有资金%dW,结婚花费50W,还需%dW
    ",money,50-money);
            }
        }
    }
    

      

    运行结果:

     

    多分支:

    基本语法:

    if(条件表达式1){
        执行代码块1;(可以有多条语句)
    }else if(条件表达式2){
        执行代码块2;(可以有多条语句)
    }
    .....(可以有多个else if语句)
    else{
        执行代码块3;(可以有多条语句)
    }
    

      

    说明:

    1. 首先判断条件1是否成立,若不成立向下依次判断条件2是否成立。一旦有某个条件,则进入代码块执行。若全部条件都不成立,则执行else中的代码块。

    2. 同样可以不使用{},用缩进来表示,但一定要注意用缩进只能有一条语句。

    简单案例:

    小黄和小范准备结婚,如果钱足够50w就结婚,如果钱够30w就先结婚然后努力赚钱买车,否则不结婚。

     
    import java.util.Scanner;
    public class Ifelse
    {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);//声明Scanner对象
            System.out.println("请输入现有资金(W):");
            int money = input.nextInt();//接收键盘输入
    //      3.多分支
            if(money >= 50){
                System.out.printf("现有资金%dW,结婚花费50W,可以结婚!
    ",money);
                System.out.printf("结婚后剩余资金%dW
    ",money - 50);
            }else if(money >= 30){
                System.out.printf("现有资金%dW,结婚至少花费30W,可以结婚!
    ",money);
                System.out.printf("结婚后剩余资金%dW,距离买车还需%dW。",money-30,20-(money-30));
            }else{
                System.out.printf("现有资金%dW,结婚至少花费30W,还需%dW
    ",money,30-money);
            }
        }
    }
    

      

    运行结果:

    分支嵌套:

    基本语法:

    if(条件表达式1){
        执行代码块1;(可以有多条语句)
    }else if(条件表达式2){
        if(条件表达式2.1){
            执行代码块2.1;(可以有多条语句)
        }else{
            执行代码块2.2;(可以有多条语句)
        }
    }
    .....(可以有多个else if语句)
    else{
        执行代码块3;(可以有多条语句)
    }
    

      

    说明:

    若满足条件表达式2,则需要再次进行判断是否满足条件表达式2.1,若满足执行代码块2.1,若不足执行代码块2.2.

    简单案例:

    小黄和小范准备结婚,如果钱足够50w就结婚,如果钱够30w就先结婚然后根据剩余资金情况选择购买新车还是二手车。剩余超过10W买新车,不足10买二手车

    import java.util.Scanner;
    public class Ifelse
    {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);//声明Scanner对象
            System.out.println("请输入现有资金(W):");
            int money = input.nextInt();//接收键盘输入
            //4.分支嵌套
            if(money >= 50){
                System.out.printf("现有资金%dW,结婚花费50W,可以结婚!
    ",money);
                System.out.printf("结婚后剩余资金%dW
    ",money - 50);
            }else if(money >= 30){
                System.out.printf("现有资金%dW,结婚至少花费30W,可以结婚!
    ",money);
                if(money - 30 >= 10){
                    System.out.printf("婚后现有资金%dW,可以购买新车!
    ",money-30);
                }else{
                    System.out.printf("婚后现有资金%dW,只能购买二手车。
    ",money-30);
                }
            }else{
                System.out.printf("现有资金%dW,结婚至少花费30W,还需%dW
    ",money,30-money);
            }
        }
    }
    

      

    运行结果:

     

    关于 if 的其他注意事项

    boolean b = true;
    if(b = false){ //注意这里是"="而不是"==",运行过程是 1.b <== false 2.判断if(b)
    System.out.println("a");
    }else if(b){
       System.out.println("b"); //若上面为"==",则输出b
    }else if(!b){
       System.out.println("c");
    }else{
       System.out.println("d");
    }

    这里结果输出:C

    选择控制(Switch)

    基本语法:

    switch(表达式){
        case 常量1:
            语句块1;
            [break;]
        case 常量2:
            语句块2;
            [break;]
        .....
        default:
            default语句块;
            [break;]
    }
    

      

    注意事项:

    1. case中常量的数据类型一定和表达式的数据类型一致,或是可以自动转换相互比较的数据类型

    2. switch(表达式)的返回值(6个)必须是:byte,short,char,int,String,enum(枚举)

    3. 如果没有写break,程序会顺序执行到switch结尾,直到seitch结束,或遇到break(”穿透“特性)

    说明:

    1. 若表达式的值为常量1,则执行语句块1,若不是则继续向下判断,直到最后所有都不满足则执行default语句块。

    2. break可以选择是否添加进代码里,作用是退出switch语句,直接转到{}后的程序语句。

    3. default这条判断语句也是可以被忽略的,若忽略则当所有条件不满足时什么都不执行直接退出switch。

    简单案例1:

    int a = 2;
    switch(a){
        case 1:
            System.out.println("1");
            break;
        case 2:
            System.out.println("2");
            break;//若不添加break;则会一直判断到最后,具体看下一个案例
        default:
            System.out.println("3");
            break;
    }
    

      

    运行结果:2

     

    简单案例2:根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季。

    int month = 1;
    switch(month){
        case 3:
        case 4:
        case 5:
            System.out.println("春");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋");
            break;
        case 12:
        case 1:
        case 2:
            System.out.println("冬");
            break;
        default:
            System.out.println("输入错误");
    }
    

      

    运行结果为:冬

    说明:

    这里用到了switch的一个特性"穿透",即若在case中不添加break语句则会一直穿透下去。

     

    简单案例3:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

    (注:输入的成绩不能大于100 [0-100])

    double sroce = 80.3;    //一定要注意switch可以判断的变量类型
    if(sroce>0 && sroce<=100){
        switch((int)sroce/60){ //充分利用整除的原理,若大于60则返回1,小于则返回0
            case 1:
                System.out.println("合格");
                break;  
            case 2:
                System.out.println("不合格");
                break;
            //这里就可以不需要用default语句,因为外面已经有了一个if语句进行输入参数的条件判断
        }
    }else{
        System.out.println("输入错误");
    }
    

      

    运行结果:合格

     

    if-else与switch的区别

    - 如果需要判断的是具体数据(数值),且数据类型为byte,short,char,int,String,enum(枚举),建议使用switch,虽然if-else也可以。
    - 如果需要判断的返回值为Boolean类型数据或区间判断,则建议使用if-else。

  • 相关阅读:
    【转】nginx(一) nginx详解
    美好生活需要全方位的保障
    Oracle私网mtu滚动修改实施方案
    小知识:后台执行Oracle创建索引免受会话中断影响
    小知识:Oracle RAC添加服务名实现单节点访问
    Windows平台安装Oracle11.2.0.4客户端报错INS-30131
    小知识:如何赋予用户查看所有存储过程和触发器的权限
    小知识:如何判定crontab任务的执行频度
    小知识:解决EXP-00003的报错
    Oracle删除索引规范
  • 原文地址:https://www.cnblogs.com/SongHai/p/14000858.html
Copyright © 2020-2023  润新知