java - 用一副纸牌填充堆栈 Java

标签 java arraylist stack push peek

我目前正在设计一个java应用程序,它将在一副洗好的牌上执行许多不同的操作。在应用程序中我有:

  • Stack.java:这是程序的接口(interface),包括pop、push、peek等方法
  • Deck.java:我的牌组类,它实现了堆栈
  • Card.java:卡片对象类
  • Shuffle.java:包含在卡上执行 riffle shuffle 的代码
  • CardForce.java:主类

我的程序中的卡片可以描述为具有面(A,2,3,4..J,K,Q)花色(红心,钻石,梅花,黑桃) 和对应于面的值,即
A = 1, 2 = 2, 3 = 3 等等。

public Card(String cardFace, String cardSuit, int cardValue){
    face = cardFace;
    suit = cardSuit;
    value = cardValue;
}//ends Card

目前,我的卡牌存储在我的套牌类的 ArrayList 中。

public class Deck implements Stack{


private List<Card> cards;

private int size;//number of cards in deck


public Deck(String[] faces, String[] suits, int[] values){
   cards = new ArrayList<Card>();
   for(String suit: suits) 
       for(int value = 0; value < values.length && value < faces.length; value++){
           Card a = new Card(faces[value], suit, values[value]);
           cards.add(a);
       }
   size = cards.size();
   //////////////////////////////////////shuffle();
   shuffle();
}//ends deck

我希望将我的牌组从数组列表更改为堆栈,以便我可以执行弹出、推送和查看等操作。也欢迎有关如何在列表转换为堆栈后实现这些操作的任何帮助。

最佳答案

您只需将堆栈函数添加到 Deck 类中并将 ArrayList 用作堆栈即可。像这样的事情:

public void push(Card c) {
  cards.add(c);
}

public Card pop() {
  Card c = cards.get(cards.size() - 1);
  cards.remove(cards.size() - 1);
  return c;
}

public Card peek() {
  return cards.get(cards.size() - 1);
}

您需要对 poppeek 添加检查,以确保您的套牌中确实有卡片,但这几乎涵盖了它。

关于java - 用一副纸牌填充堆栈 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59414827/

相关文章:

java - 自定义 View 到现有 View

java - 从其他 fragment 控制蓝牙

java - 在 arraylist<JPanel> 中添加 JPanel

java - 从字符串列表中删除停用词

c++ - 在 8 字节边界上对齐 double ?

java - QuickBooks Online Java SDK DataServiceexecuteBatch() 导致 NullPointerException

java - 如何使用 Java 收集器获取嵌套列表 <Long> 的串联

Java - 从名称和地址的 ArrayList 返回 "address"

javascript - 如何在javascript中从队列中删除元素?

linux - 是否存在读取自身进程的[堆栈]地址范围的函数?