我有以下课程:
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.
我做错了什么?
答案 0 :(得分:9)
你不想在布尔值上switch
,只需使用简单的if
/ else
if (status) {
....
} else {
....
}
修改:switch
仅用于int
s,char
或enum
s(我认为这就是全部,也许还有其他?)
编辑修改:似乎short
和byte
也是切换的有效类型,以及所有这些的Integer
,Short
等等的盒装版本<) / p>
答案 1 :(得分:9)
您无法启用boolean
(无论如何只有2个值):
Java语言规范明确指出可以switch
编辑的表达类型。
SwitchStatement: switch ( Expression ) SwitchBlock
Expression
的类型必须是char
,byte
,short
,int
,Character
,Byte
,Short
,Integer
或enum
类型,或发生编译时错误。
只需使用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中,布尔值本身就是一个类型,并且不能隐式转换为任何其他类型(布尔除外)。