更好:切换案例或if-else?

Zhi*_*anc 10 java if-statement switch-statement

可能重复:
If/Else vs. Switch

我这里有两个代码,我只想问两个中哪一个在可写性(编写代码的简易性)和可读性(易于理解代码)方面更好.

切换情况:

import java.io.*;

public class Quarter{
    public static void main(String[] args){
        int day;
        String input="";

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("Input a number from 1 to 3: ");

        try{
            input=in.readLine();
        }catch(IOException e){
            System.out.println("Error!");
        }
        day=Integer.parseInt(input);

        switch(day){
            case 1:
            case 2:
            case 3:
                System.out.println("1st Quarter");
                break;
            case 4:
            case 5:
            case 6:
                System.out.println("2nd Quarter");
                break;
            case 7:
            case 8:
            case 9:
            System.out.println("3rd Quarter");
            break;
            case 10:
            case 11:
            case 12:
                System.out.println("4th Quarter");
                break;
            default: System.out.println("Error!");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

如果别的:

import java.io.*;

public class Days{
    public static void main(String[] args){
        int day;
        String input="";

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        System.out.print("Input a number from 1 to 12: ");

        try{
            input=in.readLine();
        }catch(IOException e){
            System.out.println("Error!");
        }
        day=Integer.parseInt(input);

        if(day>=1 && day<=3){
            System.out.println("1st Quarter");
        }else
        if(day>=4 && day<=6){
            System.out.println("2nd Quarter");
        }else
        if(day>=7 && day<=9){
            System.out.println("3rd Quarter");
        }else
        if(day>=10 && day<=12){
            System.out.println("4th Quarter");
        }else
            System.out.println("Error!");
    }
}
Run Code Online (Sandbox Code Playgroud)

Lie*_*yan 36

我也不会这样做:

String[] out = {
    "1st Quarter",
    "2nd Quarter",
    "3rd Quarter",
    "4th Quarter"
};

if (1 <= day && day <= 12) {
    System.out.println(out[(day - 1) / 3]);
} else {
    System.out.println("Error!");
}
Run Code Online (Sandbox Code Playgroud)

  • 我支持这个答案,但要做得更好:System.out.println((day> 0 && day <13)?out [(day-1)/ 3]:"Error!"); (7认同)
  • 你的代码很棒,但由于你没有回答开关/案例与if/else问题这一事实,我无法给它+1,这本质上只是理论上的.不幸的是,这个答案不会帮助他下次他面对一个开关/案例,或者在其他情况下做这样的事情是不可能的. (6认同)
  • 有12个月放入4个箱子,所以我们应该除以3. (4认同)
  • 我同意,这比使用`if`或`switch`块要干净得多. (2认同)