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

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

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

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

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)

switch принимаетString from java 7. prior to java 7 толькоint compatible types (short,byte,int, char) могут быть переданы в качестве аргументов переключателя

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

В Java вы можете включить только byte, char, short или int, но не String.

 20 сент. 2012 г., 23:46
Если вы не используете Java 7 или новее - см. Другие ответы.
 20 сент. 2012 г., 23:49
Да, достаточно верно.
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`
 20 сент. 2012 г., 23:44
Вам нужно обновить Java до Java7
 26 июн. 2015 г., 08:36
И если это по-прежнему не удается, это может быть ваша IDE. Для IntelliJ, перейдите кFile > Project Structure > Project > Project Language Level и установите на 7 и выше
 user151436220 сент. 2012 г., 23:44
Что мне нужно исправить, чтобы заставить это работать на этом тогда?

Вы не можете переключить экземпляр String, только 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:

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

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

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

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

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