java - 更好的 : switch-case or if-else?

标签 java switch-statement if-statement

<分区>

Possible Duplicate:
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!");
        }

    }
}

if-else:

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!");
    }
}

最佳答案

两者都不是,我会这样做:

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!");
}

关于java - 更好的 : switch-case or if-else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853044/

相关文章:

java - 是否可以使用所有 Fragments 创建应用程序?

java - JLabel 不与字符串进行比较

java - 在 intellij 中为 java 启用 ssl 调试

c# - 我如何以最好的方式告诉主导 x 或 y 方向?

C 每个案例后的 Switch-case 花括号

Azure 管道条件

java - OnPostExecute 内的按钮 ID

javascript - 优化嵌套 switch case

vb.net - If 语句中的内存效率

MySQL 用 IF 语句连接多个字段