Java 有人能把这个转换成if语句而不是switch语句吗?
当我试图在旧的java机器上编译它时,我遇到了这个错误。我需要切换到if语句?有人能解释一下这句话吗?我得到这个错误 不兼容类型Java 有人能把这个转换成if语句而不是switch语句吗?,java,Java,当我试图在旧的java机器上编译它时,我遇到了这个错误。我需要切换到if语句?有人能解释一下这句话吗?我得到这个错误 不兼容类型 找到:java.lang.String 必填项:int 这是密码 switch(name) { String label; Rotor(){;} Rotor(String name){ switch(name){ case "B": conversion_chart = B;
找到:java.lang.String
必填项:int 这是密码
switch(name) {
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;
}
除非使用Java 7,否则不能在switch语句中使用字符串 只需按照以下模式重新编写:
Rotor(String name){
if(name != null ) {
if(name.equals("B")) {
convert_chart = B;
}
else if(name.equals("C")) {
convert_chart = C;
}
// other cases...
}
label = name;
position = 0;
}
除非使用Java 7,否则不能在switch语句中使用字符串 只需按照以下模式重新编写:
Rotor(String name){
if(name != null ) {
if(name.equals("B")) {
convert_chart = B;
}
else if(name.equals("C")) {
convert_chart = C;
}
// other cases...
}
label = name;
position = 0;
}
我经常使用一个技巧,但这可能会引起很多争论
将
switch()
中的表达式替换为name.hashCode()
。然后在每一个有一个字母的案例中,用单引号替换双引号。在所有其他地方,您必须输入与相应字符串的hashCode()相等的数值。我经常使用一个技巧,但这可能会引起很多争论
将switch()
中的表达式替换为name.hashCode()
。然后在每一个有一个字母的案例中,用单引号替换双引号。在所有其他地方,您必须输入与相应字符串的hashCode()相等的数值。我发现这些字符串上的长if/elseif在实践中并不健壮。选项:
考虑使用枚举
此外,考虑将所有字符串放入列表并使用Index Of,然后可以切换索引。
< P>我发现这些长IF/ELSIF在字符串中在实践中是不稳健的。选项:
考虑使用枚举
也可以考虑把所有的字符串放进一个列表中并使用Index Of,然后你可以切换索引。
对不起,这不是那种地方。两个小贴士:1。获取一本学习Java基础知识的教科书,2。直到java 7,交换语句只支持int、字节、短或char、枚举。C++允许字符串用于交换/ CASE块,而不是C、C++或旧版本的java。“Char”:是的。所以:if(name.equals(“B”){…}或者if(name.equals(“C”){…}
你能写出下面的全部内容吗?它给了我一个编译器错误java 6和以下版本不允许在开关stmt中使用字符串,如果您使用java 7,这应该可以工作。对不起,这不是那种地方。两个小贴士:1。获取一本学习Java基础知识的教科书,2。直到java 7,交换语句只支持int、字节、短或char、枚举。C++允许字符串用于交换/ CASE块,而不是C、C++或旧版本的java。“Char”:是的。所以:if(name.equals(“B”){…}或者if(name.equals(“C”){…}
你能写出下面的全部内容吗?它给了我一个编译器错误java 6和以下版本不允许在开关stmt中使用字符串,如果您使用java 7,这应该可以工作。两个不同的字符串可以有相同的哈希代码。@MarkByers是的,我知道这一点,我也准备接受批评:)在许多情况下,当输入限制在预期的“单词”集时,这种方法是有效的。两个不同的字符串可以有相同的哈希代码。@MarkByers是的,我知道这一点,我也准备接受批评:)好的,在许多情况下,当输入仅限于预期的一组“单词”时,这种方法是有效的。