簡體   English   中英

Java Switch不兼容類型Boolean Int

[英]Java Switch Incompatible Types Boolean Int

我有以下課程:

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.

我究竟做錯了什么?

您不想switch布爾值,只需使用簡單的if / else

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

edit: switch只用於intcharenum (我想就是全部,也許還有其他嗎?)edit edit:似乎shortbyte也是切換的有效類型,以及盒裝版本的所有這些( IntegerShort Integer等)

您無法打開boolean (無論如何, boolean只有2個值):

Java語言規范明確規定了可以switch哪種類型的表達式。

JLS 14.11 switch語句

 SwitchStatement: switch ( Expression ) SwitchBlock 

Expression的類型必須為charbyteshortintCharacterByteShortIntegerenum類型,否則會發生編譯時錯誤。

簡單地使用if語句來區分boolean的兩種情況,將更容易理解和簡潔。

Java中的switch語句可以使用byte,short,char和int(注意:不長)原始數據類型或其對應的包裝器類型。 從J2SE 5.0開始,可以使用枚舉類型。 從Java SE 7開始,可以使用字符串。

不能在開關中使用布爾值,只能使用int。 請閱讀Java文檔中的switch語句。

在Java中,switch僅適用於byte,short,char,int和enum。 對於布爾值,應使用if / else,因為狀態數量非常有限。

Switch采用整數值,並且布爾值不能轉換為整數。

在Java中,布爾值本身就是一種類型,並且不能隱式轉換為任何其他類型(布爾值除外)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM