2014-02-12 40 views
0

我有一个程序可以生成一副扑克牌并显示七张随机卡。我试图将选中的七张卡片传递给一个字符串,但我只知道如何将整个数组设置为一个字符串,而不仅仅是所选的7张卡片。将数组值列表分配为字符串

public class PlayedCards{   
     public static void main(String[] args){  
     int[] deck = new int[52];  
     String[] suits = {"Spades", "Clubs", "Diamonds", "Hearts"};  
     String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};  
     for (int a = 0; a < deck.length; a++){ 
       deck[a]= a; 
     } 

     for (int a = 0; a <deck.length; a++){ 
      int order = (int)(Math.random() * deck.length); 
      int temp = deck[a]; 
      deck[a] = deck[order]; 
      deck[order] = temp; 
     } 

     for (int a = 0; a < 7; a++){ 
      String suit = suits[deck[a]/13]; 
      String rank = ranks[deck[a] % 13]; 
      System.out.println(rank + " of " + suit); 
     } 

     System.out.println(rank + " of " + suit); 
    } 
} 

我的问题是:

是显示在我的数组的0-6值的卡?

如果是这样,我将如何将这些数组的值设置为一个单独的字符串,然后我可以回忆用户正在播放?

+5

你可以添加你想要的字符串的例子吗? –

+0

您可以使用StringBuilder在循环内连接任何您想要的内容,然后调用toString()为您生成一个字符串。 – helderdarocha

+0

我希望能够告诉用户(“已播放的卡片是”+ firstHand * +)firstHand将是该程序中播放的前七张卡片。 – user3020219

回答

1

如果你只是想创建一个String代表什么出场的球员,无论是直接串联每个卡类型和数量为结果String(每个级联隐含创建一个新的String)或更好,但使用StringBuilder要做到这一点,并在最后转换为String。所以像这样:

StringBuilder sb = new StringBuilder(); 
for (int a = 0; a < 7; a++) { 
... 
sb.append(a+1).append(": ").append(rank).append(" of ").append(suit).append("\n"); 
... 
String playedCards = sb.toString(); 
System.out.println(playedCards); 
0

更好地创造一个不可改变的卡类

class Card 
{ 
    private final int m_suit; 
    private final int m_rank; 

    public Card(int suit, int rank) 
    { 
     m_suit = suit; 
     m_rank = rank; 
    } 

    public int getSuit() 
    { 
      return m_suit; 
    } 

    public int getRank() 
    { 
      return m_rank; 
    } 

} 

现在可以创建卡实例,并通过它或将其存储在一个ArrayList中。对于例如

Card card1 = new Card(deck[a]/13, deck[a] % 13); 
System.out.println(rank[card1.getRank()] + " of " + suit[card1.getSuit()]); 
0
public class PlayCards { 
public static void main(String[] args) { 
    int[] deck = new int[52]; 
    String[] suits = { "Spades", "Clubs", "Diamonds", "Hearts" }; 
    String[] ranks = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
      "Jack", "Queen", "King" }; 
    for (int a = 0; a < deck.length; a++) { 
     deck[a] = a; 
    } 

    for (int a = 0; a < deck.length; a++) { 
     int order = (int) (Math.random() * deck.length); 
     int temp = deck[a]; 
     deck[a] = deck[order]; 
     deck[order] = temp; 
    } 

    Card card = null; 
    Card[] cards = new Card[7]; 
    for (int a = 0; a < 7; a++) { 
     card = new Card(suits[deck[a]/13], ranks[deck[a] % 13]); 
     cards[a] = card; 
    } 

    Player player = new Player(); 
    player.showCards(cards); 
} 
} 

class Card { 
private String suit; 
private String rank; 

public Card(String suit, String rank) { 
    this.suit = suit; 
    this.rank = rank; 
} 

public String toString() { 
    StringBuilder card = new StringBuilder(); 
    card.append(this.rank); 
    card.append(','); 
    card.append(this.suit); 
    return card.toString(); 
} 
} 

class Player { 
public void showCards(Card[] cards) { 
    for (int a = 0; a < 7; a++) { 
     System.out.println(cards[a].toString()); 
    } 
} 
}