选择结构

 

文章目录

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

 

if单选择结构

我们很多时候需要去判断一个东西是否可行,确认可行后才去执行,这样一个过程在程序中用if语句来表示。

语法:

if(boolean表达式){
  //boolean为ture将执行的语句
}

 

下面来看一个简单的例子:

public class IfDemo01 {
    public static void main(String[] args) {
        System.out.println("Please enter your word.");
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String a = "Hello World";

        //equals:判断字符串是否相等
        if(s.equals(a)){
            System.out.println(s);
        }
        System.out.println("It is end");
        scanner.close();
    }
}

输出结果1:
Please enter your word.
Hello World
Hello World
It is end

    
    输出结果2:
Please enter your word.
sadas
It is end

 

if双选择结构

语法:

if(boolean表达式){
    //boolean表达式为true
}else{
    //boolean表达式为false
}

 

看一个简单的例子:

/**
 * @ClassName IfDemo02
 * @Description 考试分数大于60位及格,小于60为不及格
 * @Author 
 * @Date 2021/5/31 21:15
 * @Version 1.0
 **/
public class IfDemo02 {
    public static void main(String[] args) {
        System.out.println("Please enter your score.");
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        int standard = 60;



        if(score>=standard){
            System.out.println("Pass");
        }else {
            System.out.println("No pass");
        }
        scanner.close;

    }
}

输出结果1:
Please enter your score.
59
No pass
输出结果2:
Please enter your score.
70
No Pass

 

if多选择结构

生活中很多场景不仅仅只有两个选择,所以我们需要一个多选择结构来处理这类问题。

语法:

if(boolean表达式1){
    //boolean表达式1的值为true执行代码
}else if(boolean表达式2){
    //boolean表达式2的值为true执行代码
}else if(boolean表达式3{
    //boolean表达式3的值为true执行代码
}else{
    //以上boolean表达式的值都是false,则执行该代码
}
public class IfDemo03 {
        public static void main(String[] args) {
            System.out.println("Please enter your score.");
            Scanner scanner = new Scanner(System.in);
            int score = scanner.nextInt();
            int standard = 60;



            if (score>0&&score<standard){
                System.out.println("No pass");
            }else if (score>=standard&&score<70){
                System.out.println("Level D");
            }else if (score>=70&&score<80){
                System.out.println("Level C");
            }else if (score>=80&&score<90){
                System.out.println("Level B");
            }else if (score>=90&&score<100){
                System.out.println("Level A");
            }else if (score==100){
                System.out.println("Congrarulations!");
            }else{
                System.out.println("Invalid score");
            }
            scanner.close();

        }
    }

输出结果:
Please enter your score.
85
Level B

 

注意事项:

  1. if语句至多有1个else语句,else语句在所有的else if语句之后
  2. if语句可以有若干个else if语句,它们必须在else语句之前。
  3. 一旦其中一个else if语句检测为true,其他的else if语句都将跳过执行。

嵌套的If结构

你可以在另一个if或者else if语句中使用if或者else if语句。

语法:

if(boolean表达式1){
    //boolean表达式1的值为true则执行该代码
if(boolean表达式2)
    boolean表达式2的值为true则执行该代码
  }
}

 

举例:

public class IfDemo04 {
    public static void main(String[] args) {
        System.out.println("Please enter the number.");
        Scanner scanner = new Scanner(System.in);
        int number1 = scanner.nextInt();
        int number2 = scanner.nextInt();

        /*要求输入两个都大于50的数*/
        if (number1 > 50) {
            if (number2 > 50) {
                System.out.println("number1>50 and number2>50");
            }else {
                System.out.println("number1>50 but number2 <= 50");
            }
        }else{
            System.out.println("number1 <= 50");
        }
    }
}

输出结果:
Please enter the number.
60 
60
number1>50 and number2>50

 

Switch选择结构

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

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

基本语法:

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

 

  • switch语句中的变量类型可以是: byte、short、int、char.
  • 从JDK7开始switch字段支持字符串String类型了。
  • 同时case标签必须为字符串常量或字面量。
public class SwitchDemo01 {
    public static void main(String[] args) {
        //case 穿透 switch:匹配一个具体的值
        String name = "David";
        // JDK7新特性:表达式结果可以是字符串!!!
        //字符的本质还是数字。通过hashcode来比较。

        //反编译: java---class(字节码文件)——反编译(IDEA)

        switch (name){
            /*若没有break则会将下面的语句全部输出,无法实现匹配到一个具体的值。
            * 称为case穿透现象*/
            case "Tim":
                System.out.println("Tim");
                break;

            case "Tom":
                System.out.println("Tom");
                break;

            case "David":
                System.out.println("David");
                break;
                //无以上匹配值,则输出default里的语句
            default:
                System.out.println("Invalid Name");
        }

    }
}

输出结果:
David