2016-01-21 76 views
1

所以基本上,我試圖讓switch語句只執行一次。而不是執行所有這些。 假設玩家的庫存中有所有的鑰匙。 我只想要執行一個案例,而不是遍歷所有案例。 (我想只看到一個執行)突破switch語句執行一例

public int[] allKeys = {1543, 1544, 1545, 1546, 1547, 1548}; 

if (player.getInventory().containsAny(allKeys)) { 
         for (int id : allKeys) { 
          switch(id) { 
          case 1543: 
           System.out.println("executed"); 
           break; 
          case 1544: 
           System.out.println("executed"); 
           break; 
          case 1545: 
           System.out.println("executed"); 
           break; 
          case 1546: 
           System.out.println("executed"); 
           break; 
          case 1547: 
           System.out.println("executed"); 
           break; 
          case 1548: 
           System.out.println("executed"); 
           break; 
          default: 
           System.out.println("error!"); 
          } 
         } 
        } 
+1

只是刪除for循環,這都是 –

回答

1

switch也只能做「一次一個」 - 這是事實你的交換機是一個for循環,導致您的問題...

你可以在開關switch(x) { ... } break;後面放一個「break」,但是真的爲什麼當你不想要的時候循環 - 只要打開第一個鍵即可。

+0

但後來我失去了id變量。 –

+0

我不知道該從哪裏去。 –

+0

類似於'int id = keys.first()'會給你一個id變量。說實話,你在做什麼似乎很奇怪。你只是試圖檢查一個球員是否有一組預定義的鍵?只是從一組中選擇一個似乎是錯誤的(不知道你在做什麼......) – John3136

0

您目前正在for循環中運行switch case,該循環遍歷數組allKeys中的每個id。因爲您認爲用戶擁有allKeys,我只需刪除for循環,然後選擇您希望用戶執行的任何鍵,然後讓該鍵通過switch語句。

+0

我不知道如何使用陣列作爲開關(x) 沒有環路 –