Java 有人能把这个转换成if语句而不是switch语句吗?

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机器上编译它时,我遇到了这个错误。我需要切换到if语句?有人能解释一下这句话吗?我得到这个错误

不兼容类型
找到: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是的,我知道这一点,我也准备接受批评:)好的,在许多情况下,当输入仅限于预期的一组“单词”时,这种方法是有效的。