簡體   English   中英

如何將此代碼從 switch case 更改為 if else?

[英]How to change this code from switch case to if else?

如何使用 if-else 編寫此代碼? 我想知道這兩種方法的區別。 謝謝

switch (status) {
    case AIRCRAFT_CARRIER_HIT:
        if (this.getFleet().updateFleet(ShipType.ST_AIRCRAFT_CARRIER))
            result[1] = "a";
        break;
    case BATTLESHIP_HIT:
        if (this.getFleet().updateFleet(ShipType.ST_BATTLESHIP))
            result[1] = "a";
        break;
    case CRUISER_HIT:
        if (this.getFleet().updateFleet(ShipType.ST_CRUISER))
            result[1] = "a";
        break;
    case DESTROYER_HIT:
        if (this.getFleet().updateFleet(ShipType.ST_DESTROYER))
            result[1] = "a";
        break;
    case SUB_HIT:
        if (this.getFleet().updateFleet(ShipType.ST_SUB))
            result[1] = "a";
        break;
    default:
        result[1] = null;

在 if 語句中,枚舉必須是完整的形式,並且在所有條件中都必須提到與之比較的變量。 我不知道枚舉的名稱,但我猜它是狀態。 在那種情況下,你會寫

if (status == Status.AIRCRAFT_CARRIER_HIT) {
    if (this.getFleet().updateFleet(ShipType.ST_AIRCRAFT_CARRIER)) {
        result[1] = "a";
    }
} else if (status == Status.BATTLESHIP_HIT) {
    // etc.
} else {
    result[1] = null;
}

您的 switch 語句可以用 if/else 編寫如下(假設變量AIRCRAFT_CARRIER_HIT等是最終的並在編譯時分配了一個值,例如final int AIRCRAFT_CARRIER_HIT = 3

 if (status == AIRCRAFT_CARRIER_HIT ) {
       ...  
 }
 else if (status ==  BATTLESHIP_HIT) {
       ...  
 }
 …
 …
 else {
      // default case
 }

對於每種方法的差異和優點/缺點,您可以在此處查看例如

if-else 和 switch case 之間的區別在於,在 java 中使用 switch 來比較特定變量的不同值(case),而 if-else 用於根據您定義的邏輯控制執行流程。 另一種看待它的方式是 if-else 語句根據 if 語句中表達式的評估來選擇語句的執行。 開關通常根據鍵盤命令選擇語句的執行。 當您嘗試遵循邏輯時,超過三個嵌套的 if/else 語句開始變得混亂。

暫無
暫無

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

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