BlackJack纸牌游戏:我可以创建堆栈,但无法访问它们

时间:2015-12-14 21:55:15

标签: 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 calculateHand() {

}

public void compareHands() {

}


}

这是CardStack类:它扩展了Stack,直到现在只有方法混合卡,用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);
}


}

这是卡类:我将稍后在

上实现套件/颜色作为枚举
package BlackJack;

public class Card {

private int value;
private String color;
//enum Suit { HEARTS, DIAMONDS, CLUBS, SPADES };

public void setValue(int value) {
    this.value = value;
}

public void setColor(int l) {
    if (l == 0) {
        this.color="Hearts";
    }
    if (l == 1) {
        this.color="Clubs";
    }
    if (l == 2) {
        this.color="Diamonds";
    }
    if (l == 3) {
        this.color="Spades";
    }
}

public int getValue() {
    return value;
}

public String getColor() {
    return color;
}

}

当我使用cs.pop时,有人可以解释为什么我会得到一个EmptyStackException吗?

1 个答案:

答案 0 :(得分:0)

您不需要在mixCards方法中创建单独的堆栈,因为CardStackStack(因为它扩展了它)。 因此,只需使用this.push(您也可以跳过this.部分,因为它将由编译器添加)以将卡添加到由{em>当前实例{{1} }。

顺便说一句。 Avoid raw types。如果您的课程是为了持卡,那么您应该将其声明为

CardStack
相关问题