2.4 选择结构语句

选择结构语句根据是否满足某个条件确定执行哪些操作,分为if条件语句和switch条件语句。

1. 单分支if语句

(1)if语句是指如果满足某种条件,就进行某种处理,格式如下。

if(条件) {
    // 执行语句
}

根据上述格式中,判断条件是一个布尔值,当判断条件为true时,{}中的执行语句才会执行。if语句的执行流程如下所示。

2.4 选择结构语句_第1张图片

(2)单分支if案例

编写程序,从键盘上读取一个整数,若该数是偶数,输出该数。

public static void main(String[] args) {
    int num;
    Scanner input = new Scanner(System.in);
    System.out.print("请输入一个整数:");
    num = input.nextInt();
    if(num % 2 == 0){
        System.out.println(num + "是偶数.");
    }
}

2. 双分支if-else语句

(1)if…else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理,格式如下。

if(条件) {
    // 执行语句1
}else{
    // 执行语句2
}

在上述格式中,判断条件是一个布尔值。当判断条件为true时,if后面{}中的执行语句1会执行。当判断条件为false时,else后面{}中的执行语句2会执行。执行流程如下所示。

2.4 选择结构语句_第2张图片

(2)双分支if-else案例

编写程序,从键盘上读取一个整数,如果该数字能被2整除则是一个偶数,否则该数字就是一个奇数。

public static void main(String[] args) {
    int num;
    Scanner input = new Scanner(System.in);
    System.out.print("请输入一个整数:");
    num = input.nextInt();
    if(num % 2 == 0){
        System.out.println(num + "是偶数.");
    }else {
        System.out.println(num + "是奇数.");
    }
}

3. 嵌套的if语句

(1)嵌套的if语句概述

if或if-else结构中语句可以是任意合法的Java语句,甚至可以是其他的if或if-else结构,内层的if结构称为嵌套在外层的if结构中,格式如下。

if (判断条件){
    if (判断条件){
        执行语句1
    }else{
        执行语句2
    }
}

(2)嵌套的if语句案例

求a、b和c中最大值并将其保存到max中,要求使用一个嵌套的if结构。

public static void main(String[] args) {
    int max;
    Scanner input = new Scanner(System.in);
    System.out.println("请输入a:");
    int a = input.nextInt();
    System.out.println("请输入b:");
    int b = input.nextInt();
    System.out.println("请输入c:");
    int c = input.nextInt();
    if(a > b){ //a大 再比较 c
        if(a > c){
            max = a;
        }else{
            max = c;
        }
    }else{  //b大 再比较 c
        if(b > c){
            max = b;
        }else{
            max = c;
        }
    }
    System.out.println("最大值是:" + max);
}

4. 多分支的if-else语句

(1)多分支的if-else概述

如果程序逻辑需要多个选择,可以在if语句中使用一系列的else if语句,这种结构称为阶梯式if-else结构,格式如下。

if (判断条件1){
    执行语句1
} else if (判断条件2){
    执行语句2
}else if (判断条件n) {
    执行语句n
}else {
    执行语句n+1
}

(2)多分支的if-else语句案例

输入学生的百分制成绩,打印输出等级的成绩。等级规定为,90分(包括)以上的为“优秀”,80分(包括)以上的为“良好”,70分(包括)以上的为“中等”,60分(包括)以上的为“及格”,60分以下为“不及格”。

要求:输入语句为“请输入张三同学的成绩:”,其中“张三”为本人姓名。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("请输入张三的成绩:");
    double score = input.nextDouble();
    String level = "";
    if(score > 100 || score < 0){
        System.out.println("输入的成绩不正确。");
        System.exit(0);
    }else if(score >= 90){
        level = "优秀";
    }else if(score >= 80){
        level = "良好";
    }else if(score >= 70){
        level = "中等";
    }else if(score >= 60){
        level = "及格";
    }else{
        level = "不及格";
    }
    System.out.println("张三的成绩等级为" + level);
}

5. 条件运算符

(1)条件运算符概述

Java提供了一个三元运算符,可以同时操作三个表达式,三元运算符语法格式如下所示。

判断条件 ? 表达式1 : 表达式2

在上述语法格式中,当判断条件为true时,计算表达式1的值作为整个表达式的结果,否则计算表达式2的值作为整个表达式的结果。

(2)条件运算符案例

条件运算符可以实现if-else结构,分别用if-else和条件运算符求整数a、b两个数中的最大值。

  • if-else方式实现

public static void main(String[] args) {
    int x = 0;
    int y = 1;
    int max;
    if (x > y) {
        max = x;
    } else {
        max = y;
    }
    System.out.println(max);
}
  • 条件运算符方式实现

public static void main(String[] args) {
    int x = 0;
    int y = 1;
    int max = x > y? x : y;
    System.out.println(max);
}

6. switch语句

(1)switch语句格式

switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码。一般格式如下:

switch (expression){
   case value1:
      statements  [break;]
   case value2:
      statements  [break;]
   …
   case valueN:
      statements  [break;]
   [default:
      statements]
}

(2)switch语句注意事项

expression是一个表达式,它的值必须是byte、short、int、char、enum、String。

case后的value为常量或常量表达式,与表达式类型相一致,expression与value值比较,如果两值相等会执行该case后的语句。

break语句功能是退出switch语句。

default为可选子句,如果expression与value都不匹配,则执行default语句。

(3)switch语句案例

  • 使用switch语句根据给出的数值输出对应中文格式的星期。

public static void main(String[] args) {
    int week = 5;
    switch (week) {
        case 1:
            System.out.println("星期一");
            break;
        case 2:
            System.out.println("星期二");
            break;
        case 3:
            System.out.println("星期三");
            break;
        case 4:
            System.out.println("星期四");
            break;
        case 5:
            System.out.println("星期五");
            break;
        case 6:
            System.out.println("星期六");
            break;
        case 7:
            System.out.println("星期七");
            break;
        default:
            System.out.println("输入的数字不正确...");
            break;
    }
}
  • 使用switch语句根据给出的数值输出对应工作日还是休息日。

public static void main(String[] args) {
    int week = 2;
    switch (week) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            System.out.println("今天是工作日");// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
            break;
        case 6:
        case 7:
            System.out.println("今天是休息日");// 当 week 满足值 6、7 中任意一个时,处理方式相同
            break;
    }
}

7. 练习

编写程序,从键盘输入一个农历月份,输出该月所在的季节。

春,农历1、2、3月;夏,农历4、5、6月;秋,农历7、8、9月;冬,农历的10、11、12月。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("请输入农历月份:");
    int month = input.nextInt();
    String season = "";
    switch (month){
        case 1:
        case 2:
        case 3:
            season = "春季";
            break;
        case 4:
        case 5:
        case 6:
            season = "夏季";
            break;
        case 7:
        case 8:
        case 9:
            season = "秋季";
            break;
        case 10:
        case 11:
        case 12:
            season = "冬季";
            break;
        default:
            System.out.println("非法月份");
            System.exit(0);
    }
    System.out.println("该月在" + season);
}

你可能感兴趣的:(Java程序设计,java)