2015-12-14 41 views
-2

所以这是我的主类:它创建了一个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类:它扩展堆栈和直到现在只有填充与312卡(6decks A 13 A型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; 
} 

} 

可有人EXPL ain为什么我在使用cs.pop时会发生EmptyStackException?

+2

因为你试图从一个空的堆栈弹出一些东西 – redFIVE

回答

0

您不需要在mixCards方法中创建单独的堆栈,因为您的CardStackStack(因为它扩展了它)。
所以,简单地使用this.push(你也可以跳过this.一部分,因为它会被编译器反正加)中加入信用卡时由CardStack当前实例表示卡堆。

顺便说一句。 Avoid raw types。如果你的课程是为了持有卡片,那么你应该声明它为

public class CardStack extends Stack<Card> { 
    ... 
} 
+0

谢谢!该评论非常有用。 – helio

+0

如果您指的是上面的帖子,那么它是*答案*。你现在发布的是*评论*。反正你是欢迎的。 – Pshemo

+1

@helio哦,如果你认为一些答案解决您的问题,那么你应该将其标记为解决你的问题(在这里更多的信息:http://meta.stackexchange.com/questions/5234/如何-不接受-的回答工作/ 5235#5235)。如果有多个答案解决了问题,请选择一个您最喜欢的答案。 – Pshemo