在Java中使用switch语句

时间:2016-09-21 04:46:12

标签: java switch-statement

我得到的情况是,例如,数字a只能是1,2,3或4.然后我用它来构建一个开关块,如:

switch (metadata.getValueType()) {
    case 1:
        method1();
        break;
    case 2:
        method2();
        break;
    case 3:
        method3();
        break;
    case 4:
        method4();
}

但是我知道在没有default的情况下编写交换机块并不是一个好的习惯,对吧?所以我想在default之后添加case 4。但是我可以确保除了1,2,3和4之外没有其他情况。我应该在default写什么?

最佳做法是什么?我可以在案例4中写下以下内容:

switch (metadata.getValueType()) {
    case 1:
        method1();
        break;
    case 2:
        method2();
        break;
    case 3:
        method3();
        break;
    case 4:
    default:
        method4();
}

6 个答案:

答案 0 :(得分:2)

无论您使用何种语言,我总是使用默认子句。

事情可以而且确实出错了。这些值不是您所期望的,依此类推。

switch (myVar) {
   case 1: ......; break;
   case 2: ......; break;
   default: throw new RuntimeException("myVar invalid " + myVar);
}

答案 1 :(得分:1)

如果我理解你的问题......

使用默认开关选项是最佳做法,因为它将捕获任何预期值(即使它们无效:5,6,7等)以及意外值。这允许您控制在任何但有效值到达交换机时发生的情况。要回答你的问题,你可以在默认情况下添加一个break语句,除了退出开关之外什么都不做。

switch (metadata.getValueType()) {
case 1:
    method1();
    break;
case 2:
    method2();
    break;
case 3:
    method3();
    break;
case 4:
    method4();
    break;
default:
    break;
}

答案 2 :(得分:0)

是的,没有默认的switch语句很难看。因此,您只需删除案例4并将其替换为默认值。正如你所说,你恰好有4个案例。所以,如果它不是1或2或3 ......它将是4。 但我希望通过使用4个案例保留您的代码,并在默认正文中打印一些错误消息。

答案 3 :(得分:0)

正如你所说,如果输入是1,2,3& 4.不使用案例4,您可以使用默认值。如果给定的输入不是1,2&然后,它挑衅4.

答案 4 :(得分:0)

我建议在无效值上抛出异常:

default:
    throw new IllegalArgumentException("Invalid type: " + metadata.getValueType());

答案 5 :(得分:0)

嗨,最好同时声明案例4和默认值,但它正在运行。 import java.util。*; 公共类HelloWorld {

public static void main(String[] args) {
    Scanner sb = new Scanner(System.in);
    int choice;
    System.out.println("Enter Your Choice :");
    choice = sb.nextInt();
    switch (choice) {
        case 1:
            method1();
            break;
        case 2:
            method2();
            break;
        case 3:
            method1();
            break;
        case 4:
        default:
            method4();
            break;
    }
}
public static void method1() {
    System.out.println("Hello Method 1");
}
public static void method2() {
    System.out.println("Hello Metho 2");
}
public static void method3() {
    System.out.println("Hello Method 3");
}
public static void method4() {
    System.out.println("Hello Method 4 a default method ");
}

}