switch语句在Java中的使用

switch语句在Java中的使用,java,switch-statement,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(); } 但是我

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

switch (metadata.getValueType()) {
    case 1:
        method1();
        break;
    case 2:
        method2();
        break;
    case 3:
        method3();
        break;
    case 4:
        method4();
}
但是我知道在没有默认值的情况下编写开关块不是一个好习惯,对吗?因此,我想在
案例4
之后添加一个
默认值
。但我可以确定,除了1、2、3和4之外,没有其他情况。我应该在
默认值中写什么

最佳做法是什么?我可以在案例4中不写任何内容,如下所示:

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

是的,没有默认值的switch语句很难看。因此,您可以简单地删除案例4并用默认值替换它。正如你所说,你正好有4个病例。所以,如果不是1或2或3。。。四点。
但我希望通过使用4个case来保留代码,并在default body中打印一些错误消息。

如您所述,如果输入将是1,2,3和4,则可以使用default而不是case 4。如果给定的输入不是1,2和3,则默认为4

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

事情可以也确实会出错。这些值将不是您期望的值,以此类推

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

我建议对无效值引发异常:

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

如果我正确理解你的问题

存在默认开关选项是最佳做法,因为它将捕获任何预期值(即使它们无效: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;
}

您好,最好同时声明case4和default,但它正在工作。 导入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 ");
}

}

如果案例不是指定的案例,则打印错误,因为它只能是1、2、3或4(您向我们提供的先决条件),或者如果您有一个方法需要在没有案例发生时运行,等等。。有很多可能性,只要选择一个适合你的,你就可以抛出一个
异常。例如,
IllegalArgumentException
如果您这样写,我们可能会认为您将4视为默认值