Java Switch不兼容的类型布尔Int

时间:2010-05-24 15:25:39

标签: java boolean switch-statement compiler-errors

我有以下课程:

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 个答案:

答案 0 :(得分:9)

你不想在布尔值上switch,只需使用简单的if / else

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

修改:switch仅用于int s,charenum s(我认为这就是全部,也许还有其他?) 编辑修改:似乎shortbyte也是切换的有效类型,以及所有这些的IntegerShort等等的盒装版本<) / p>

答案 1 :(得分:9)

您无法启用boolean(无论如何只有2个值):

Java语言规范明确指出可以switch编辑的表达类型。

JLS 14.11 The switch statement

SwitchStatement:
    switch ( Expression ) SwitchBlock
     

Expression的类型必须是charbyteshortintCharacterByteShortIntegerenum类型,或发生编译时错误。

只需使用if语句来区分boolean的两种情况,就更具可读性和简洁性。

答案 2 :(得分:2)

Java中的switch语句可以使用byte,short,char和int(注意:不长)原始数据类型或其相应的包装类型。从J2SE 5.0开始,可以使用枚举类型。从Java SE 7开始,可以使用字符串。

答案 3 :(得分:1)

不能在switch中使用boolean,只能使用int。请阅读switch doc语句的Java文档。

答案 4 :(得分:1)

在Java中,switch仅适用于byte,short,char,int和enum。对于布尔值,你应该使用if / else,因为状态非常有限。

答案 5 :(得分:1)

Switch采用整数值,并且布尔值不能转换为整数。

在java中,布尔值本身就是一个类型,并且不能隐式转换为任何其他类型(布尔除外)。