2013-04-01 134 views
1

我在檢查枚舉值的索引時遇到問題,如果該整數大於1並且是可替換項,那麼我有一個帶有可變長度整數的枚舉,那麼當我得到下一個索引I增加一個。但是,當增量之後沒有另一個整數時,遊戲崩潰了,我一直試圖在過去的半小時左右想出一個解決方案,我似乎無法檢查它的最後一個索引枚舉。我知道這是一個非常本地化的問題,但我需要一些幫助。檢查枚舉值索引

代碼:

private int getNextId(Food food, int id) { 
    if (food.getType().equals(REPLACE)) { 
     for (int i = 0; i < food.getIds().length; i++) { 
      if (food.getIds()[i] == id) { 
       return food.getIds()[i + 1]; 
      } 
     } 
    } 
    return -1; 
} 

枚舉:

private enum Food { 
    SHRIMP(REMOVE, 3, 315), 
    LOBSTER(REMOVE, 12, 379), 
    MANTA_RAY(REMOVE, 22, 391), 
    MONKFISH(REMOVE, 16, 7946), 
    MACKREL(REMOVE, 6, 355), 
    SALMON(REMOVE, 9, 329), 
    SEA_TURTLE(REMOVE, 22, 397), 
    SHARK(REMOVE, 20, 385), 
    SWORDFISH(REMOVE, 14, 373), 
    TROUT(REMOVE, 7, 333), 
    TUNA(REMOVE, 10, 361), 
    TUNA_POTATO(REMOVE, 22, 7060), 

    CAKE(REPLACE, 4, 1891, 1893, 1895), 
    CHOCOLATE_CAKE(REPLACE, 5, 1897, 1899, 1901), 
    PLAIN_PIZZA(REPLACE, 7, 2289, 2291), 
    MEAT_PIZZA(REPLACE, 8, 2293, 2295), 
    ANCHOVY_PIZZA(REPLACE, 9, 2297, 2299), 
    PINEAPPLE_PIZZA(REPLACE, 11, 2301, 2303), 
    APPLE_PIE(REPLACE, 7, 2323, 2335), 
    REDBERRY_PIE(REPLACE, 5, 2325, 2333), 
    MEAT_PIE(REPLACE, 6, 2327, 2331); 

    private final ConsumableType type; 

    private final int healAmount; 

    private final int[] ids; 

    private Food(ConsumableType type, int healAmount, int... ids) { 
     this.type = type; 
     this.ids = ids; 
     this.healAmount = healAmount; 
    } 

    public ConsumableType getType() { 
     return type; 
    } 

    public int getHealAmount() { 
     return healAmount; 
    } 

    public int[] getIds() { 
     return ids; 
    } 

    public String getName() { 
     return name().toLowerCase().replaceAll("_", " "); 
    } 

} 

哦另有說明,我已經嘗試了檢查,如果它是-1或,但就像我說我可以似乎沒有弄明白。先謝謝了。

+0

顯示您的枚舉代碼。 –

+0

已編輯主帖。 – rmcmk

+0

如果只有一個ID,您想從該方法返回什麼? –

回答

1

你想要做這樣的事嗎?

private int getNextId(Food food, int id) { 
    if (food.getType().equals(REPLACE)) { 
     int n = food.getIds().length; 
     for (int i = 0; i < n; i++) { 
      if (food.getIds()[i] == id && (i+1) < n) { 
       return food.getIds()[i + 1]; 
      } 
     } 
    } 
    return -1; 
} 

在上面的方法中,只有存在下一個Id時才返回,否則返回-1。

+0

啊!完善。我沒有想到,我只是在檢查「id」是否爲_-1_,而不是實際的id長度。謝謝! – rmcmk

+0

如果這是爲你工作,你能接受它作爲答案(通過點擊'打勾'標記?) – sanbhat

+0

是的,沒問題。 :) – rmcmk