Switch Statement gives Incompatible Types error

匿名 (未验证) 提交于 2019-12-03 00:59:01

问题:

I am trying to compile and I get this error:

enigma/Rotor.java:30: incompatible types found : java.lang.String required: int     switch(name){ 1 error 

Why am I getting this error? How do I fix it? It's in the package and I can't seem to figure it out. Here's the code:

String label;  Rotor(){;}  Rotor(String name){   switch(name){     case "B":       conversion_chart = B;       break;     case "C":       conversion_chart = C;       break;     case "I":       conversion_chart=I;       notch = NOTCH[0];       break;     case "II":       conversion_chart=II;       notch = NOTCH[1];       break;     case "III":       conversion_chart=III;       notch = NOTCH[2];       break;     case "IV":       conversion_chart=IV;       notch = NOTCH[3];       break;     case "V":       conversion_chart=V;       notch = NOTCH[4];       break;     case "VI":       conversion_chart=VI;       notch = NOTCH[5];       break;     case "VII":       notch = NOTCH[6];       conversion_chart=VII;       break;     case "VIII":       notch = NOTCH[7];       conversion_chart=VIII;       break;   }   label = name;   position = 0; } 

回答1:

switch(name) 

switch statement with String is supported from Java7 onwards only.

I guess the compiler version you are using is less than Java7

Options:

1) You need to either upgrade to Java7  2) Change switch statement to `if/else` 3) Use `int` in switch instead of `String` 


回答2:

switch accepts a String from java 7. prior to java 7 only int compatible types (short,byte,int, char) can be passed as switch arguments



回答3:

You cannot switch over a String instance, only int (and byte/char/short, but not long/double), unless you have Java7+. Your best option now is to change to if else statements, like so:

if("B".equals(string)) {     //handle string being "B" } else if("C".equals(string)) {     //handle string being "C" } else ... 

For more info on switching, see the Oracle tutorial. They mention the Java7 String functionality:

In Java SE 7 and later, you can use a String object in the switch statement's expression.



回答4:

In Java, you can only do a switch on byte, char, short, or int, and not a String.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!