切换案例具有价值,但只有默认案例在运行。
int z = Integer.parseInt(x);
JOptionPane.showMessageDialog(null,+z);
switch (z) {
case ('1'):
C.SetEmpInformation();
break;
case ('2'):
C.UpdateEmpInformation();
break;
default:
JOptionPane.showMessageDialog(null, "Invalid Identity");
}
答案 0 :(得分:3)
删除case语句中的单引号。它们将被匹配为char
,而不是int
。 “ 1”是character
,与数字1完全不同。
switch (z) {
case 1: /* .... */
case 2: /* .... */
default : /* .... */
}
您也不需要括号。
答案 1 :(得分:1)
您在case
语句中检查的类型是错误的,您将int
(z
)与char
('1'
)进行比较。 / p>
您需要这样编写case
:
JOptionPane.showMessageDialog(null, + z); // btw, what is this + doing here?
switch (z) {
case 1:
C.SetEmpInformation();
break;
case 2:
C.UpdateEmpInformation();
break;
default:
JOptionPane.showMessageDialog(null, "Invalid Identity");
break;
}
答案 2 :(得分:0)
它在NetBeans中也适用于我,因此,即使它不能在您的计算机上启动,您也可以使用一些验证工具,如linter,诸如此类。
无论如何,您编写的都是正确的Java代码,只是它可能无法满足您的期望,而这正是消息所指示的。
您可以switch
处理数字,字符和字符串,所有这些都可以使用。只是不要混合它们:它们要么不会编译(将数字/字符与String混合),要么会以一种可能无法预料的方式工作(将数字与字符混合),因为1
是一个数字,但'1'
是一个字符,用ASCII码表示为数字49。
测试代码:
String x="1";
int z=Integer.parseInt(x);
switch(z){
case ('1'): System.out.println(z+" is '1'");break;
default: System.out.println(z+" is not '1'");
}
x="49";
z=Integer.parseInt(x);
switch(z){
case ('1'): System.out.println(z+" is '1'");break;
default: System.out.println(z+" is not '1'");
}
x="1";
z=Integer.parseInt(x);
switch(z){
case 1: System.out.println(z+" is 1");break;
default: System.out.println(z+" is not 1");
}
switch(x.charAt(0)){
case '1': System.out.println("\"1\".charAt(0) is '1'");break;
default: System.out.println("\"1\".charAt(0) is not '1'");
}
switch(x){
case "1": System.out.println("\""+x+"\" is \"1\"");break;
default: System.out.println("\""+x+"\" is not \"1\"");
}
输出:
1 is not '1' 49 is '1' 1 is 1 "1".charAt(0) is '1' "1" is "1"