2015-05-28 31 views
-1

我有這個代碼爲我正在製作的紙牌遊戲,我似乎無法使它輸出所有卡牌中的排名"A","2","3","8","J","Q""K"(我不希望這些排名是卡片輸出)。任何幫助請一個Java Deck類

import java.util.*; 

public class Deck { 

public static void main (String[]args) { 

    String[]suit = {"♣","♥","♦","♠"} ; 
    String[]rank = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"} ; 

    int SUITS = suit.length; 
    int RANKS = rank.length; 
    int N = SUITS*RANKS; 

// initialize deck 
    String[]deck = new String [N]; 

    for (int i=0; i<RANKS; i++) { 

     for (int j=0; j<SUITS; j++) { 

      deck [SUITS*i+j] = rank[i] + suit[j]; 
     } 
    } 

// shuffle 
    for (int i=0; i<N; i++) { 

     int r = i + (int)(Math.random()*(N-i)); 

     String t = deck [r]; 
     deck[r] = deck [i]; 
     deck[i] = t; 
    } 

// print shuffled deck 
    for (int i=0; i<N; i++) { 

      System.out.println (deck[i]); 

    } 
} 
} 
+0

你能打印整個未洗牌的套牌嗎? –

+0

你的角色系統是否識別你的特殊字符「♣」,「♥」,「♦」,「♠」 –

+0

爲什麼你的套牌不是二維數組? – Sarz

回答

0

可能性是檢查如果第一張卡是一張無效卡,然後丟棄它,並重新洗牌甲板,如果是。像Sara上面說過的,我們將檢查charAt索引0並查看它是否是無效卡。在下面的例子中,還有一個不同的方法來洗牌,以便可以在for循環中訪問它。在頂部留下的東西,但給這個鏡頭。

deck = shuffleDeck(deck, N); 

// print shuffled deck 
for (int i=0; i<N;) 
{ 

    //checking for invalid char at index 0 
    if(i == 0 && (deck[i].charAt(0) == 'K' || deck[i].charAt(0) == 'A' || deck[i].charAt(0) == '2' || deck[i].charAt(0) == 'Q')) 
    { 
     System.out.println("Invalid first card."); 
     shuffleDeck(deck, N); 
    } 
    else 
    { 
     System.out.println(deck[i]); 
     i++; 
    } 
} 
} 

private static String[] shuffleDeck(String[] deck, int N) 
{ 
    // shuffle 
    for (int i=0; i<N; i++) 
    { 
     int r = i + (int)(Math.random()*(N-i)); 
     String t = deck [r]; 
     deck[r] = deck [i]; 
     deck[i] = t; 
    } 
return deck; 
} 
+0

這工作。 非常感謝 –

+0

很高興幫助:) – basic