2015-12-14 43 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