Он работает и для меня в NetBeans, поэтому, если он даже не запускается на вашем компьютере, у вас может быть какой-нибудь инструмент проверки, linter, что-то в этом роде.
В любом случае, то, что вы пишете, является правильным кодом Java, простоэто не будет делать то, что вы ожидаете, и это то, что может указывать в сообщении.
Вы можете switch
на числах, символах и строках, все они работают.Только не смешивайте их: они либо не будут компилироваться (смешивая числа / символы со строкой), либо будут работать, вероятно, неожиданным образом (смешивая числа с символами), потому что 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"