本文介绍了Java随机播放卡座的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在获取我的代码来洗牌时遇到了问题。我认为我具有collections.shuffle的语法错误。我目前拥有的代码没有改组。请在下面找到卡片组和卡组。卡座类包含collections.shuffle方法。
I am having problem getting my code to shuffle the deck. I think i have the syntax for collections.shuffle wrong. The code I currently have is not shuffling the deck. Below please find the deck class and the card class. The deck class holds the collections.shuffle method.
甲板等级
public class Deck {
private Card[] deck = new Card[52];
private int topCard;
Deck() {
topCard = 0;
for (int i = 0; i < deck.length; i++)
deck[i] = new Card(i);
}
public void shuffle() {
topCard = 0;
Collections.shuffle(Arrays.asList(deck));
}
public Card dealCard() {
Card theCard;
if (topCard < deck.length) {
theCard = deck[topCard];
topCard++;
}
else
theCard = null;
return theCard;
}
}
卡级别
public class Card {
private int cardNum;
final static String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
final static String[] ranks = {"Ace", "2", "3","4","5","6","7","8", "9","10", "Jack", "Queen", "King"};
Card (int theCard) {
setCardNum (theCard);
}
public void setCardNum (int theCard) {
cardNum = (theCard >= 0 && theCard <= 52)? theCard: 0;
}
public int getCardNum() {
return cardNum;
}
public String toString() {
return ranks[cardNum%13] + " of " + suits[cardNum/13];
}
public String getSuit() {
return suits[cardNum/13];
}
public String getRank() {
return ranks[cardNum%13];
}
public int getValue() {
return cardNum%13;
}
}
推荐答案
此处是一个类似问题的示例代码,在该示例中,我们被要求不要使用任何内置函数来洗牌,而被允许使用Math.random()。
Here is a sample code for a similar question where we were asked not to use any built-in function to shuffle the deck but was allowed to use Math.random().
import java.util.*;
class Card {
private String rank;
private String suit;
public Card(String r,String s) {
rank=r;
suit=s;
}
public String getRank() {
return rank;
}
public String getSuit() {
return suit;
}
public String toString() {
return rank+" of "+suit;
}
}
class Deck {
private ArrayList<Card> deck;
private String[] ranks ={"ACE","2","3","4","5","6","7","8","9","10","JACK","QUEEN","KING"};
private String[] suits ={"SPADE","HEART","CLUB","DIAMOND"};
public Deck() {
deck = new ArrayList<Card>();
for(int i=0;i<suits.length;i++) {
for(int j=0;j<ranks.length;j++) {
deck.add(new Card(ranks[j],suits[i]));
}
}
}
public void showCards() {
System.out.println("\n\n Showing Cards !!!");
int i=1;
for(Card c:deck) {
System.out.println("Card "+(i++)+" : "+c);
}
}
public void shuffle() {
ArrayList<Card> temp = new ArrayList<Card>();
while(!deck.isEmpty()) {
int loc=(int)(Math.random()*deck.size());
temp.add(deck.get(loc));
deck.remove(loc);
}
deck=temp;
}
}
public class Game {
public static void main(String[] args) {
Deck myDeck = new Deck();
myDeck.showCards();
myDeck.shuffle();
myDeck.showCards();
}
}
这篇关于Java随机播放卡座的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!