2013-05-21 82 views
0

我需要幫助創建一個ArrayList並向它們添加一些整數。從本質上講,我有一張紙牌遊戲,可以拉出卡片,然後保存ID(BCID)。我想將此拉ID添加到ArrayList,所以我可以避免兩次拉同一張卡。我有它設置如下,但我不斷得到重複。我知道這些卡拉動正確,因爲它顯示一切正常 - 只是重複卡,不幸的是。在Android中使用整數ArrayList

任何幫助你可以提供將是偉大的!我已盡力包括相關部分。如果您需要更多信息,請告訴我。

public static Integer bcid1, bcid2, bcid3, bcid4, bcid5, bcdcid; 
public static List<Integer> usedCards = new ArrayList<Integer>(); 

在下面的例子中,假定檢測到重複然後初始化序列繪製不同的卡。

public static void setIDs() 
{ 
    try 
    { 
     bcid1 = Integer.parseInt(bc1); 
     usedCards.add(bcid1); 
    } 
    catch(NumberFormatException nfe) 
    {  } 

    try 
    { 
     bcid2 = Integer.parseInt(bc2); 
     if (usedCards.contains(bcid2)) 
     { 
      try 
      { 
       blueCard2(ctx); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     else 
     { 
      usedCards.add(bcid2); 
     } 
    } 
    catch(NumberFormatException nfe) 
    {  } 

    try 
    { 
     bcid3 = Integer.parseInt(bc3); 
     if (usedCards.contains(bcid3)) 
     { 
      try 
      { 
       blueCard3(ctx); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     else 
     { 
      usedCards.add(bcid3); 
     } 
    } 
    catch(NumberFormatException nfe) 
    {  } 

    try 
    { 
     bcid4 = Integer.parseInt(bc4); 
     if (usedCards.contains(bcid4)) 
     { 
      try 
      { 
       blueCard4(ctx); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     else 
     { 
      usedCards.add(bcid4); 
     } 
    } 
    catch(NumberFormatException nfe) 
    {  } 

    try 
    { 
     bcid5 = Integer.parseInt(bc5); 
     if (usedCards.contains(bcid5)) 
     { 
      try 
      { 
       blueCard5(ctx); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     else 
     { 
      usedCards.add(bcid5); 
     } 
    } 
    catch(NumberFormatException nfe) 
    {  } 
} 
+1

我不遵循你的邏輯。哪裏有'bc1','bc2'等等? –

回答

1

使用HashSet而不是arraylist。設置不允許重複。

+0

這不會適得其反嗎?如果它不接受重複,我怎麼能在if語句中畫一張新卡? – user2356076

+0

這將是合乎邏輯的,很好的答案,但我認爲他/她期待解決方案不是解決方案:) –

+0

Marko有些不對。由於我以前從未使用過HashSet,因此您可以提供的任何特定方向都很棒! – user2356076

0

首先考慮使用重複代碼的方法,它更容易調試和調整所有在一個地方不跳來跳去。在這裏,如果你想使用列表按照這樣的東西。相應地調整

編輯:看這不會有很多原因,因爲list.contains只有當一個對象位於列表內時纔會返回true,在您的解決方案的想法中,您有兩個具有相同內容的不同對象。你正在混合這兩件事。這是不一樣的。所以你的函數只返回false。

我的代碼更多的是建議你如何創建一個方法,並希望你將在這方面做更多的工作。這些都是基本的編程技巧。我不想粗魯,但這完全超出了這個論壇的目的。

希望這可以幫助和享受你的工作

+0

不幸的是,它仍然拉着重複的卡片。有任何想法嗎? – user2356076

+0

Hello Marko,感謝您的回覆。我一直在研究過去的5個小時,而且我一直在困難地解釋爲什麼它不起作用。儘管你的回答有一些洞見。我會繼續挖掘。 – user2356076