我正在用java創建一個洗牌程序。我如何退出。我是否通過System.exit(0); ?我正在用java創建一個洗牌程序
回答
您可以/應該考慮創建一個Card對象。
接下來,使用2個嵌套for循環來填充列表。 最後,使用Collections.shuffle(list)。
for(suit : suits) {
for (rank : ranks) {
listOfCards.add(new Card(suit, rank));
}
}
Collections.shuffle(listOfCards);
class Card {
private final String rank;
private final String suit;
Card(String rank, String suit) {
this.rank = rank;
this.suit = suit;
}
}
打我吧。唯一的一點是,我會使用枚舉而不是字符串作爲'rank'和'suit'(請參閱http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html) ) –
@AnonyAccioly:絕對,但是因爲這看起來像一個介紹編程類型的東西,所以我選擇不鑽研Rank和Suit enums(這更好) – Ivan
很好玩的程序學習。當你想出這個問題時,我建議你回過頭來創建一個更加面向對象的設計(即製作一個Card對象並與它們一起工作)!
看起來問題在於你錯誤地定義了你的Deck對象,然後實際上並沒有使用它。注意你的洗牌如何實際上不影響甲板本身(它應該是d.deck
)!我現在要做的就是放棄Deck對象的想法,直接使用一個類,一組數據和方法。一旦你有了這些,考慮如何使用單獨的Deck對象來概括它。一旦你有了這些,試着將這些卡自己推廣到卡類。
如果您感到困惑,請隨時提問,我很樂意提供幫助。
您只能發出一個命令的原因是因爲您正在關閉掃描儀。 http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#close()的文檔指出,當您這樣做時,它也會關閉底層的流。因此,在關閉掃描儀之後,您無法獲得更多輸入。 您應該將您的掃描儀初始化移至while循環之外,並且永遠不要關閉它。
閱讀@Ivan答案。 完成之後,將Scanner
移出循環,並將其與一些整潔的Java 7功能(try-with-resources)結合使用,以解決您的問題。
try (Scanner s = new Scanner(System.in)) {
while (true) {
System.out.println ("shuffle or draw");
Scanner s = new Scanner(System.in);
System.out.println ("What would you like to do?");
String command = s.next();
if (command.equals("shuffle")) {
d.shuffle();
} else if (command.equals("draw")){
d.draw();
}
}
}
- 1. 創建一副牌和洗牌他們
- 2. 在Java中洗牌一套
- 3. 創建一個部分洗牌的隨機數排序列表
- 4. java:卡洗牌,
- 5. 創建一個Java程序
- 6. simple-json正在洗牌我的數據
- 7. 洗牌一副牌?
- 8. 陣列洗牌java
- 9. 在java中洗牌兩個數組
- 10. 程序洗牌卡,當我擊中洗牌按鈕,卡上的GUI窗口
- 11. 洗牌一套
- 12. 我正在用java和javafx創建混合應用程序
- 13. java - 我如何創建一個int數組與隨機洗牌數在給定的範圍
- 14. 創建我的第一個java web應用程序
- 15. 如何從一個範圍創建一個Vec並對其進行洗牌?
- 16. 我正在嘗試用java創建一個三角形
- 17. java程序打印整數數字作爲洗牌
- 18. 我想在我的Android應用程序創建一個通知
- 19. 如何在Java中洗牌FilteredList?
- 20. 錯誤而洗牌在Java中
- 21. 在Java中洗牌二維數組
- 22. 如何在Java中洗牌甲板?
- 23. 正確使用LINQ來洗牌甲板
- 24. 創建從numpy陣列洗牌的多個tensorflow常量
- 25. SQL查詢創建結合兩個表和洗牌結果
- 26. 火花正在洗牌大量數據
- 27. 我試圖洗牌這些卡在一個載體中
- 28. Talend洗牌的順序
- 29. Elasticsearch洗牌索引排序
- 30. NetworkX洗牌節點順序
神聖的壓痕,蝙蝠俠。 – admdrew
有沒有任何理由爲什麼這是[雙發佈](http://stackoverflow.com/questions/20480665/shuffling-and-drawing-from-a-deck-of-cards-in-java)? – MadProgrammer