Java 切换不兼容类型 Boolean Int

问题描述 投票:0回答:6

我有以下课程:

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.

我做错了什么?

java boolean switch-statement compiler-errors
6个回答
10
投票

您无法打开

boolean
(无论如何它只有 2 个值):

Java 语言规范明确规定了可以进行

switch
编辑的表达式类型。

JLS 14.11 switch 语句

SwitchStatement:
    switch ( Expression ) SwitchBlock

Expression
的类型必须是
char
byte
short
int
Character
Byte
Short
Integer
enum
类型,或发生编译时错误。

简单地使用

if
语句来区分
boolean
的两种情况会更具可读性和简洁性。


9
投票

您不想在布尔值上使用

switch
,只需使用简单的
if
/
else

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

编辑:

switch
仅用于
int
char
enum
(我想仅此而已,也许还有其他?) 编辑编辑:似乎
short
byte
也是有效的切换类型,以及所有这些的盒装版本(
Integer
Short
等)


2
投票

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


1
投票

switch 中不能使用 boolean,只能使用 int。请阅读 Java 文档以了解 switch 语句。


1
投票

Switch 接受整数值,布尔值无法转换为整数。

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.