【发布时间】:2018-10-20 04:11:16
【问题描述】:
我正在开发一个命令行类型的程序,可以让你玩纸牌。我目前有class Deck和class Card。 在类 Deck 中,我有一个 ArrayList 和两种方法 - 一种用于创建甲板,另一种用于对其进行洗牌。我需要创建一个处理卡片的方法——这意味着一种从 ArrayList 中选择随机元素并将其从 ArrayList 中删除的方法。我相信,当发牌时,它不再在 ArrayList 中了。这是我的 Deck 类中的代码:
public class Deck {
private ArrayList deck = new ArrayList < Card > ();
private Random randomGenerator;
}
public Deck() {
for (Suit s: Suit.values())
for (Numbers n: Numbers.values()) {
Card c1 = new Card(n, s);
deck.add(c1);
System.out.println(deck);
}
}
private void printAll() {}
public void shuffle() {
Collections.shuffle(deck);
}
我真的很难创建一种方法来删除处理的元素,到目前为止我所做的几乎都是基于这个问题的答案,但这并不是我所需要的。 Retrieving a random item from ArrayList
public Card deal(deck) {
Random rand = new Random();
Card dealtCard = rand.deck();
return dealtCard;
}
任何人都可以为我提供有关此方法的任何指导吗? 请和谢谢你
【问题讨论】:
-
deck.remove(ThreadLocalRandom.current().nextInt(deck.size())); -
我认为更好的办法是使用
Collections.shuffle(),然后每次只从顶部或底部发一张牌。 docs.oracle.com/javase/9/docs/api/java/util/… -
一个好的起点是查看 ArrayList 的 javadocs
-
我确实重新格式化了代码,对不起
-
@CatV 不是。同样基于此代码,您的类
Deck在花括号的定位方面不正确
标签: java