java —— 分支

java —— 分支

分支语句

一、if语句

(一)、if - else 语句

if( 表达式 ){
语句;
} else {
语句;
}

public class 类名 {
    public static void main(String[] args){
        if (表达式){
            语句体1;
        }else{
            语句体2;
        }
    }
}
  1. 当表达式的结果为真时(即满足表达式时),执行语句体1,如果不满足表达式时,执行语句体2;
  2. 语句体1,语句体2,在 if - else 语句中只会执行一个,不会两个同时执行;
  3. if(表达式) 是正确的写法,if(表达式); 是错误的写法,if(表达式) 的后面没有分号!

代码1:

public class Reversal {
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        if (a > b){
            System.out.println(a);
        }else{
            System.out.println(b);
        }
    }
}

在此代码中 a = 10 ,b = 20,b是大于a的所以按照 if - else 语句应该输出的是b的答案,即20。

20

代码2:

public class Reversal {
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        if (a > b); {
            System.out.println(a);
        }else{
            System.out.println(b);
        }
    }
}

在此代码中我们在 if(a > b) 的后面加了一个 ; 这会导致什么结果?

错误: java: 有 'if', 但是没有 'else'

我们的编译器报错,没有else,但是实际上我们有一个else。
这是因为分号(;)代表一个语句,在 if(a > b) 后面加上一个分号,就代表了一个空语句,因此我们的 System.out.println(a); 语句就被自动划给了 else , 因此我们后面的else就被视为无效了。

(二)、if - else 的嵌套结构

if(表达式1){
语句1;
}else if(表达式2){
语句2;
}else if(表达式3){
语句3;
} ……

public class Main {
    public static void main(String[] args) {
        if (表达式1){
            语句体1;
        }else if (表达式2){
            语句体2;
        }else if (表达式3){
            语句体3;
        }else if (表达式4){
            语句体4;
        }......
    }
}
  1. 表达式1不成立才会判断表达式2,同理表达式2不成立才会继续去判断表达式3;
  2. if语句中的else是对应它最近的if
  3. if、else 是关键字

代码1:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        if (num > 0){
            System.out.println(num + "是正数");
        }else if (num < 0){
            System.out.println(num + "是负数");
        }else{
            System.out.println(num + "是0");
        }
    }
}
5
5是正数
-2
-2是负数
0
0是0

代码2:(表达式下的第2点)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        if (a == 1)
            if (b == 2)
                System.out.println(a); // 语句1
            else
                System.out.println(b); // 语句2
    }
}

很多会误以为 语句1的执行条件为:a为1,并且b为2; 语句2的执行条件:a不为1

1 2
1
1 3
3

但是从运行结果可以知 语句2的执行条件为:a为1,并且b不为2

二、switch语句

  1. 结构:
    switch(表达式){
    case 常量1:{
    语句1;
    break;
    }
    case 常量2:{
    语句2;
    break;
    }
    case 常量3:{
    语句3;
    break;
    }
    ……
    default:{
    语句体n;
    break;
    }
    }
public class Main {
    public static void main(String[] args) {
        switch (表达式){
            case 常量1 :{
                语句体1;
                break;
            }
            case 常量2 :{
                语句体2;
                break;
            }
            ……
            default:{
                语句体n;
                break;
            }
        }
    }
}
  1. case的后面一定是一个常量!,case语句的最后一定要加上 break 语句停止执行 switch 后面的所有语句;
  2. switch 的表达式是 char、byte、short、int、Character、Byte、Short、Integer、枚举类型中的一种;
  3. default 语句 判断不属于前面任何case的情况。

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        switch (a){
            case 1:{
                System.out.println("石头");
                break;
            }
            case 2:{
                System.out.println("剪刀");
                break;
            }
            case 3:{
                System.out.println("布");
                break;
            }
            default:{
                System.out.println("error!");
                break; // 可加可不加
            }
        }
    }
}
2
剪刀
4
error!

END

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值