2014-12-02 162 views
0

我是Java的初学者。我试图为我的扑克游戏Java代码创建一个洗牌方法。它应该返回52张牌,洗牌。这些指令告诉我使用math.random去除一张卡,并在ArrayList的末尾返回它,并且执行500次来洗牌。如何删除元素并将其添加到ArrayList的末尾?

我很困惑,因为我可以加回来。这就是我迄今为止的所有...谢谢!

public void shuffle() 
    { 

    int x = (int)(52 * Math.random()); 
    myDeck.remove(x); 

    } 

顺便说一句,myDeck是ArrayList名称。

ArrayList<Card> myDeck; 
+0

在哪里?“** 500 **倍”哪里是任何尝试“?在该ArrayList结束**返回它**” – mudasobwa 2014-12-02 07:51:06

+0

我用于(INT I = 0;我<= 500; i ++)。也做myDeck.add(x),但给了我错误。 “类型ArrayList 中的方法add(int,Card)不适用于参数(int)” – Oninez 2014-12-02 07:53:57

+0

@Oninez请参阅[我的答案](http://stackoverflow.com/a/27244343/474189)。你需要存储'remove()'的结果并重新添加。 – 2014-12-02 07:55:08

回答

4

您需要存储的remove()结果:

Card card = myDeck.remove(x); 

然后再添加它,它会自动将其置于列表的末尾:

myDeck.add(card); 
+0

啊,这太棒了!非常感谢,我一直在试图找出如何制作一张新卡,这张卡是我刚刚拿出来的,并且已经过了几个小时......再次感谢! – Oninez 2014-12-02 07:57:23

0

简单,节省价值,删除它并重新添加它。

Card y = myDeck.get(x) 
myDeck.remove(x); 
myDeck.add(y); 
+2

'remove()'返回之前在那个位置的对象,所以你可以在少一行的情况下做到这一点。 – 2014-12-02 07:54:31

相关问题