Типы, несовместимые с Java Switch Boolean Int - PullRequest
0 голосов
/ 24 мая 2010

У меня есть следующий класс:

public class NewGameContract {

public boolean HomeNewGame = false;

public boolean AwayNewGame = false;

public boolean GameContract(){

    if (HomeNewGame && AwayNewGame){
        return true;
    } else {
        return false;
    }
}
}

Когда я пытаюсь использовать это так:

            if (networkConnection){

            connect4GameModel.newGameContract.HomeNewGame = true;

            boolean status = connect4GameModel.newGameContract.GameContract();

            switch (status){

                case true:
                    break;

                case false:
                    break;
            }
            return;
        }

Я получаю ошибку:

incompatible types found: boolean required: int on the following
`switch (status)` code.

Что я делаю не так?

Ответы [ 6 ]

9 голосов
/ 24 мая 2010

Вы не можете включить boolean (в любом случае, которые имеют только 2 значения):

Спецификация языка Java четко указывает, какой тип выражения может быть switch -ed on.

JLS 14.11 Оператор переключения

SwitchStatement:
    switch ( Expression ) SwitchBlock

Тип Expression должен быть char, byte, short, int, Character, Byte, Short, Integer или enum , или ошибка времени компиляции.

Намного удобнее читать и лаконичнее просто использовать оператор if, чтобы различать два случая boolean.

9 голосов
/ 24 мая 2010

Вы не хотите switch для логического значения, просто используйте простое if / else

if (status) {
  ....
} else {
  ....
}

edit: switch используется только для int s, char s или enum s (я думаю, что это все, может быть есть другие?) edit edit: кажется, short и byte также являются допустимыми типами для переключения, а также коробочные версии всех этих (Integer, Short и т. д.)

2 голосов
/ 24 октября 2012

Операторы Switch в Java могут использовать примитивные типы данных byte, short, char и int (note: not long) или их соответствующие типы-оболочки. Начиная с J2SE 5.0, стало возможным использовать типы enum. Начиная с Java SE 7, стало возможным использовать Strings.

1 голос
/ 24 мая 2010

Switch принимает целочисленное значение, и логическое значение не может быть преобразовано в целое число.

В Java логическое значение является самостоятельным типом и не может быть неявно преобразовано в любой другой тип (кроме логического)..

1 голос
/ 24 мая 2010

В Java switch работает только для byte, short, char, int и enum.Для логических значений вы должны использовать if / else, поскольку число состояний очень ограничено.

1 голос
/ 24 мая 2010

Не может использовать логическое значение в switch, только int.Пожалуйста, прочтите документацию по Java для оператора switch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...