我得到的情况是,例如,数字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();
}
答案 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 ");
}
}