11、流程控制 - 顺序结构和选择结构

流程控制

顺序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
  • 顺序结构是最简单的算法结构
  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

选择结构

  • if单选择结构
  • if双选择结构
  • if多选择结构
  • 嵌套的if结构
  • switch 多选择结构

if单选择结构

  • 我们很多时候需要去判断一件事情是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示

  • 语法:

    if(布尔表达式){
        执行语句 //如果布尔表达式为true将执行此处语句
    }
    

    例如:

    import java.util.Scanner;
    
    public class IfDemo01 {
        public static void main(String[] args) {
    
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个整数:");
    
            //hasNextInt()返回值为布尔值,用来判断接收到的数据是否为整型
            if (scanner.hasNextInt()){
                //nextInt()方法用来接收输入的整型数据
                System.out.println("输入的整数为:"+scanner.nextInt());
            }
    
            System.out.println("END");
            scanner.close();
        }
    }
    

    这里就不输出结果了。这是一个if单选择结构,当用户输入的数据为int类型时,会打印出用户输入的数据;若不是int类型,则会跳过if的执行语句,输出“END”,程序结束。

if双选择结构

  • if双选择结构也是非常好理解的。它其实就相当于:

    如果A为真,那么执行B,否则执行C

  • 语法:

    if(布尔表达式A){
        执行语句B //如果布尔表达式值为true将执行B
    }else{
        执行语句C //如果布尔表达式值为false将执行C
    }
    

    例如:

    import java.util.Scanner;
    
    public class IfDemo02 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个整数:");
            if (scanner.hasNextInt()){
                System.out.println("输入的整数为:"+scanner.nextInt());
            }else {
                System.out.println("您输入的不是一个整数!");
            }
            System.out.println("END");
            scanner.close();
        }
    }
    

    当用户输入的数据为int类型时,将打印出输入的数据;当输入的数据不是int类型时,将打印“您输入的不是一个整数!”。

if多选择结构

  • 我们日常生活中正常遇到的问题,通常不仅仅只有一两种选择。所以我们需要一个多选择结构来解决问题!

  • 语法:

    if (布尔表达式 1) {
        语句A //1的值为true,执行A
    }else if (布尔表达式 2) {
        语句B //2的值为true,执行B
    }else if (布尔表达式 3) {
        语句C //3的值为true,执行C
    }else {
        语句N //以上布尔表达式(1 - n)值都不为true,执行N
    }
    

    例如:

    import java.util.Scanner;
    
    public class IfDemo03 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入成绩:");
            double score = scanner.nextDouble(); 
            if (score < 60) {
                System.out.println("差");
            }else if (60 <= score && score < 75) {
                System.out.println("中等");
            }else if (75 <= score && score <90) {
                System.out.println("良好");
            }else {
                System.out.println("优秀");
            }
            scanner.close();
        }
    }
    

    显而易见,当输入的成绩处于[0-60)时,输出“差”;当成绩处于[60-75)时,输出“中等”;当成绩处于[75-90)时,输出“良好”;当成绩处于[90-100]时,输出“优秀”。

嵌套的if结构

  • 使用嵌套的 if...else 语句时合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。你可以像 if 语句一样嵌套 else if ... else。

  • 语法:

    if (布尔表达式 1) {
        语句A //如果1的值为true,执行A和下面的if语句
            if (布尔表达式 2) {
                //需要1 和 2 的值全都为true 才会之行B
                语句B //如果2的值为true,执行B和下面的if语句(如果有的话)
            }
    }
    

    例如我们把上面的例子改进一下:

    import java.util.Scanner;
    
    public class IfDemo04 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入成绩:");
            double score = scanner.nextDouble();
            if (score >= 0 && score <= 100) {
                if (score < 60) {
                    System.out.println("差");
                } else if (60 <= score && score < 75) {
                    System.out.println("中等");
                } else if (75 <= score && score < 90) {
                    System.out.println("良好");
                } else {
                    System.out.println("优秀");
                }
            }else {
                System.out.println("您输入的成绩不合法!");
            }
            scanner.close();
        }
    }
    

    这就是一个典型的嵌套的 if 结构。当满足了最外层条件:成绩不小于0且成绩不大于100,才会进行下一层判断。

switch 多选择结构

  • 多选择结构还有一个实现方式就是 switch case 语句。

  • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

  • swith 语句中的变量类型可以是:

    • byte、short、int 或者 char。
    • 从 Java SE7 开始,switch 支持字符串 String 类型了。
    • 同时 case 标签必须为字符串常量或字面量。
  • 语法:

    switch (expression) {
        case value :
            语句
            break;//可选
        case value :
            语句
            break;//可选
        //你可以有任意数量的case语句
        default;//可选
            语句
    }
    

    例如:

    public class SwitchCaseDemo {
        public static void main(String[] args) {
            char grade = 'C';
    
            switch (grade) {
                case 'A' :
                    System.out.println("优");
                    break;
                case 'B' :
                    System.out.println('良');
                    break;
                case 'C' :
                    System.out.println('中');
                    break;
                case 'D' :
                    System.out.println('差');
                    break;
                default:
                    System.out.println("未知等级");
            }
        }
    }
    

    很显然,我们初始化了grade的值为'C',所以只满足case 'C',结果会打印出 '中'。

    如果grade的值 不在 'A'、'B'、'C'、'D' 中,则会匹配 default ,打印出“等级未知”。

posted @ 2021-03-16 00:02  都怪你  阅读(118)  评论(0)    收藏  举报
/*复制代码*/