Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这个交换机案例在Netbeans中不起作用?_Java_Switch Statement - Fatal编程技术网

Java 为什么这个交换机案例在Netbeans中不起作用?

Java 为什么这个交换机案例在Netbeans中不起作用?,java,switch-statement,Java,Switch Statement,开关案例正在取值,但只有默认案例正在运行 int z = Integer.parseInt(x); JOptionPane.showMessageDialog(null,+z); switch (z) { case ('1'): C.SetEmpInformation(); break; case ('2'): C.UpdateEmpInformation(); break; default:

开关案例正在取值,但只有默认案例正在运行

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

删除case语句中的单引号。它们将匹配为
char
,而不是
int
1'是一个
字符
,与数字1非常不同

 switch (z) {
   case 1: /* .... */
   case 2: /* .... */
   default : /* .... */
}

您也不需要括号。

删除case语句中的单引号。它们将匹配为
char
,而不是
int
1'是一个
字符
,与数字1非常不同

 switch (z) {
   case 1: /* .... */
   case 2: /* .... */
   default : /* .... */
}

您也不需要括号。

您在
case
语句中检查的类型错误,您将
int
z
)与
字符(
'1'
)进行比较

您需要这样编写您的
案例
s:

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;
}

您在
case
语句中检查的类型错误,您将
int
z
)与
char
'1'
)进行比较

您需要这样编写您的
案例
s:

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;
}

它在NetBeans中也适用于我,所以如果它甚至不能在您的机器上启动,您可能会有一些验证工具linter之类的工具。
不管怎么说,您编写的是正确的Java代码,只是它可能不会达到您的预期,而这正是消息所表明的。
您可以
切换
数字、字符和字符串,它们都可以工作。不要把它们混在一起:它们要么不会编译(将数字/字符与字符串混在一起),要么会以一种可能意想不到的方式工作(将数字与字符混在一起),因为
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\"");
}    
输出:


它在NetBeans中也适用于我,所以如果它甚至不能在您的机器上启动,您可能会有一些验证工具linter之类的工具。
不管怎么说,您编写的是正确的Java代码,只是它可能不会达到您的预期,而这正是消息所表明的。
您可以
切换
数字、字符和字符串,它们都可以工作。不要把它们混在一起:它们要么不会编译(将数字/字符与字符串混在一起),要么会以一种可能意想不到的方式工作(将数字与字符混在一起),因为
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”是一个字符,而不是数字1。变量
z
1
49
中的值(字符1的ASCII值)?另外,从风格上看,案例标签中的括号看起来很奇怪,可能会让人感到困惑。请尝试
case1:
case2:
注意,您的示例在Eclipse上也不起作用。如果是这样的话,很可能代码是不同的。(这是基本Java…不是IDE差异。)“1”是字符,不是数字1。变量
z
1
49
中的值(字符1的ASCII值)?另外,从风格上看,案例标签中的括号看起来很奇怪,可能会让人感到困惑。请尝试
case1:
case2:
注意,您的示例在Eclipse上也不起作用。如果是这样的话,很可能代码是不同的。(这是基本的Java…不是IDE的区别。)非常感谢,它工作了,但是这个程序在Eclipse中运行得很好。为什么?从编译器的角度看,你没有写错误的代码,它似乎是有效的。问题是它没有按您希望的方式工作…非常感谢,它工作了,但是这个程序在Eclipse中运行得很愉快。为什么?从编译器的角度来看,您没有编写错误的代码,它似乎是有效的。问题是它没有按照你想要的方式工作。。。