我有以下课程:
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.
我做错了什么?
您无法打开
boolean
(无论如何它只有 2 个值):
Java 语言规范明确规定了可以进行
switch
编辑的表达式类型。
SwitchStatement: switch ( Expression ) SwitchBlock
的类型必须是Expression
、char
、byte
、short
、int
、Character
、Byte
、Short
或Integer
类型,或发生编译时错误。enum
简单地使用
if
语句来区分 boolean
的两种情况会更具可读性和简洁性。
您不想在布尔值上使用
switch
,只需使用简单的 if
/else
if (status) {
....
} else {
....
}
编辑:
switch
仅用于int
、char
或enum
(我想仅此而已,也许还有其他?)
编辑编辑:似乎 short
和 byte
也是有效的切换类型,以及所有这些的盒装版本(Integer
、Short
等)
Java中的Switch语句可以使用byte、short、char和int(注意:不是long)原始数据类型或其相应的包装类型。从 J2SE 5.0 开始,可以使用枚举类型。从 Java SE 7 开始,可以使用字符串。
switch 中不能使用 boolean,只能使用 int。请阅读 Java 文档以了解 switch 语句。
Switch 接受整数值,布尔值无法转换为整数。
在java中,布尔值本身就是一种类型,并且不能隐式转换为任何其他类型(布尔值除外)。
在Java中,switch仅适用于byte、short、char、int和enum。对于布尔值,您应该使用 if/else,因为状态数量非常有限。