if else语句怎么换switch语句

eclipse里,if else语句换eclipse语句,求哥大带带

img

public class Number {
public static void main(String[] args) {
int number = 0,d1,d2,d3,d4,d5;
Scanner reader = new Scanner(System.in);
System.out.println("输入一个1-99999之间的数:");

    number = reader.nextInt();

    d5 = number / 10000;
    d4 = (number % 10000) / 1000;
    d3 = (number % 1000) / 100;
    d2 = (number % 100) / 10;
    d1 = number % 10;

    int length = String.valueOf(Math.abs(number)).length();
    switch (String.valueOf(number).length()){
        case 1:{
            switch (number){
                case 0:
                    System.out.printf("\n %d 不在1-99999之间",number);
                    break;
                case 1:
                    System.out.println(number + "是1位数");
                    System.out.println(number + "是回文数");
            }
            break;
        }
        case 2:{
            switch (length){
                case 1:
                    System.out.printf("\n %d 不在1-99999之间",number);
                    break;
                case 2:
                    System.out.println(number + "是2位数");
                    System.out.println((d2 == d1)?(number + "是回文数"):number + "不是回文数");
            }
            break;
        }
        case 3:{
            switch (length){
                case 2:
                    System.out.printf("\n %d 不在1-99999之间",number);
                    break;
                case 3:
                    System.out.println(number + "是3位数");
                    System.out.println((d3 == d1)?(number + "是回文数"):number + "不是回文数");
            }
            break;
        } case 4:{
            switch (length){
                case 3:
                    System.out.printf("\n %d 不在1-99999之间",number);
                    break;
                case 4:
                    System.out.println(number + "是4位数");
                    System.out.println((d4==d1&&d3==d2)?(number + "是回文数"):number + "不是回文数");
            }
            break;
        } case 5:{
            switch (length){
                case 4:
                    System.out.printf("\n %d 不在1-99999之间",number);
                    break;
                case 5:
                    System.out.println(number + "是5位数");
                    System.out.println((d5==d1&&d4==d2)?(number + "是回文数"):number + "不是回文数");
            }
            break;
        }
        default:{
            System.out.printf("\n %d 不在1-99999之间",number);
        }
    }
}

}

switch 语句只能对固定的值进行比较,复杂的 if else 无法转换为 switch。

if else 可以转换为 switch 的示例:

public class Test {

    public static void main(String[] args) {
        int num = 0;
        if (num == 0) {
            System.out.println("num is 0");
        } else {
            System.out.println("num is not 0");
        }

        // 等价于下面的代码
        switch (num) {
            case 0:
                System.out.println("num is 0");
                break;
            default:
                System.out.println("num is not 0");
                break;
        }
    }
}

if else 无法转换为 switch 的示例:

public class Test {

    public static void main(String[] args) {
        int num = 0;
        if (num > 0) {
            System.out.println("num 大于 0");
        } else {
            System.out.println("num 小于或等于 0");
        }
    }
}

由于你截图中的条件过于复杂,无法转换为 switch 语句。
如果对你有帮助,麻烦动动小手点个采纳。