Java 21点纸牌游戏:我可以创建堆叠,但可以';我不能接近他们

Java 21点纸牌游戏:我可以创建堆叠,但可以';我不能接近他们,java,stack,Java,Stack,这是我的主要类:它创建一个CradStack对象并使用mixCards方法,您将在下一个类块中看到 package BlackJack; public class BlackJack { public static void main(String[] args) { CardStack cs = new CardStack(); cs.mixCards(); //cs.pop(); } public BlackJack() { } public void c

这是我的主要类:它创建一个CradStack对象并使用mixCards方法,您将在下一个类块中看到

package BlackJack;


public class BlackJack {

public static void main(String[] args) {
    CardStack cs = new CardStack();
    cs.mixCards();
    //cs.pop();
}

public BlackJack() {

}

public void calculateHand() {

}

public void compareHands() {

}


}
这是CardStack类:它扩展了Stack,到目前为止只有方法mix Cards,它用312张卡(6张牌、13种类型、4套牌)填充堆栈,然后将其与Collections.shuffle方法混合。 这应该行得通

package BlackJack;

import java.util.Collections;
import java.util.Stack;


public class CardStack extends Stack {

public CardStack() {

}



public void mixCards() {
    Stack st = new Stack();

    for (int i = 0; i < 6; i++) {                                           
        for (int k = 0; k < 13; k++) {                                      
            for (int l = 0; l < 4; l++) {                                   
                Card cd = new Card();
                cd.setValue(k);
                cd.setColor(l);
                st.push(cd);
            }
        }
    }
    Collections.shuffle(st);
}


}

有人能解释一下为什么我使用cs.pop时会出现EmptyStackException吗?

你不需要在
mixCards
方法中创建单独的堆栈,因为你的
CardStack
是一个
堆栈(因为它扩展了它)。
因此,只需使用
this.push
(您也可以跳过
this.
部分,因为编译器仍将添加该部分),即可将卡添加到由当前
CardStack
实例表示的卡堆栈中

顺便说一句,如果你的课程是用来持卡的,那么你应该声明它是

public class CardStack extends Stack<Card> {
   ...
}
公共类CardStack扩展堆栈{
...
}

因为你正试图从空堆中弹出一些东西,如果你在上面引用帖子,那么它就是一个答案。你现在发布的是一条评论。无论如何,欢迎你:)@helio-Oh,如果你认为某个答案解决了你的问题,那么你应该将其标记为问题的解决方案(更多信息,请点击此处)。如果解决问题的答案不止一个,那么选择一个你最喜欢的答案。
public class CardStack extends Stack<Card> {
   ...
}