【问题标题】:Populate stack with deck of cards Java用扑克牌 Java 填充堆栈
【发布时间】:2020-04-12 08:27:06
【问题描述】:

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

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

我的程序中的卡片可以描述为具有face(A,2,3,4..J,K,Q)suit(Hearts,Diamonds,Clubs,Spades) 和对应于面部的值,即
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

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

【问题讨论】:

    标签: java arraylist stack push peek


    【解决方案1】:

    您可以将堆栈函数添加到您的 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 以确保您的套牌中确实有卡片,但这几乎涵盖了它。

    【讨论】:

    • 谢谢伙计!只是想知道 id 现在是如何在我的主类中调用这些方法的,对 java 来说还是个新手,不知道如何调用非静态变量。
    • 在您的主类中,您可以使用Deck d = new Deck(...) 创建一个新的Deck 对象,然后调用d.push(new Card(...))Card popped = d.pop()Card peeked = d.peek() 等方法
    • 很抱歉成为一个痛苦的伙伴,但是如果要说移除卡组的最上面的卡,请让用户指定卡组中应该放置卡的位置,然后验证其在正确的位置,我该怎么做?
    【解决方案2】:

    只需在 JDK 中使用 Stack 类即可支持这些功能。

    您可以使用数组列表填充Stack

          List<Card> list = your array list
          Stack<Card> stack = new Stack<>();
          stack.addAll(list);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多