Коммутатор дает ошибку несовместимых типов

Я пытаюсь скомпилировать, и я получаю эту ошибку:

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

Почему я получаю эту ошибку? Как мне это исправить? Это'в упаковке, и я могуКажется, это понять. Вот's код:

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

Ответы на вопрос(5)

char, short или int, но не String.

 Don Branson20 сент. 2012 г., 23:49
Да, достаточно верно.
 Windle20 сент. 2012 г., 23:46
Если вы не используете Java 7 или новее - см. Другие ответы.

переключатель принимаетСтрока из Java 7.до Java 7 толькоint совместимые типы (short, byte, int, char) могут быть переданы в качестве аргументов переключателя

 krico16 мая 2013 г., 16:27
Я действительно сожалею об этом. Я пытался удалить это понижение, и оно говорит мне, что яМне не разрешено менять свой голос. Это было случайное снижение, есть ли отмена?
 PermGenError16 мая 2013 г., 16:08
может ли downvoter оставить комментарий?
 PermGenError16 мая 2013 г., 16:30
@krico Я только что отредактировал свое сообщение, теперь вы можете отменить свое пониженное голосование .. :)

только int (и byte / char / short, но не long / double), если у вас нет Java7 +. Ваш лучший вариант сейчас состоит в том, чтобы перейти к операторам if else, например так:

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

Для получения дополнительной информации о переключении см. Oracleруководство, Они упоминают функциональность Java7 String:

В Java SE 7 и более поздних версиях вы можете использовать объект String в операторе switch 'с выражением

 user151436220 сент. 2012 г., 23:48
А как насчет переключателя (имя)?
 Alex Coleman20 сент. 2012 г., 23:46
@ user1514362 см редактировать
 user151436220 сент. 2012 г., 23:44
Можете ли вы дать мне пример?
 Alex Coleman20 сент. 2012 г., 23:49
@ user1514362 Что ты имеешь в виду? Я дал вам пример, который нене может использовать оператор switch, но выполняет то же самое. Isn»это то, что вы хотите? Вы должны удалить свой оператор switch, чтобы он работал
switch(name)

switch Оператор со строкой поддерживается только в Java7.

Я думаю, что версия компилятора, который вы используете, меньше, чем Java7

Опции:

1) You need to either upgrade to Java7 
2) Change switch statement to `if/else`
3) Use `int` in switch instead of `String`
 user151436220 сент. 2012 г., 23:44
Что мне нужно исправить, чтобы заставить это работать на этом тогда?
 mugume david26 июн. 2015 г., 08:36
И если это по-прежнему не удается, это может быть ваша IDE. Для IntelliJ, перейдите кFile > Project Structure > Project > Project Language Level и установите на 7 и выше
 kosa20 сент. 2012 г., 23:44
Вам нужно обновить Java до Java7

просто добавьте следующий фрагмент кода в ypur pom.xml и решите вашу проблему:

 <build>
        <plugins>
            <plugin>
                <groupid>org.apache.maven.plugins</groupid>
                <artifactid>maven-compiler-plugin</artifactid>
                <configuration>
                    <source>1.8
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
 Kirill Karmazin28 дек. 2018 г., 18:06
Похоже, мавен застрял в средневековье. Я никогда не думал, что такая очевидная вещь, как стандартный java API, должна быть включена явно, добавив несколько строк в файл maven pom. Это работает, спасибо!

Ваш ответ на вопрос