2013-05-21 35 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