2013-10-10 30 views
0

我想要做的是製作一個卡類,它將通過隨機生成一個值和一個套裝來隨機生成一張卡片。我不在乎它是否創建了4張完全相同的卡片,這不是我所關心的。但以下是我認爲迄今爲止我的最佳嘗試。試圖從數組中獲得隨機元素

String[] PossCards = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" }; 
String[] PossSuits = new String[]{"C", "S", "H", "D"}; 
Random rand = new Random(); 

public Card(){ 

    String Card = PossCards[rand.nextInt(PossCards.length)]; 
    String Suit = PossSuits[rand.nextInt(PossSuits.length)]; 

    String ActCard = Suit + "" + Card; 
} 

這不工作,雖然,當我用我的手類嘗試創建4張隨機卡,回來的值爲「空空空空」。上述代碼中的錯誤是?或者是我在手課中一定會誤會的東西?

+3

記住Java命名約定。變量名稱應以小寫字符開頭。 –

+5

請發佈SSCCE重現您的錯誤。 –

+4

您是否以某種方式存儲ActCard值?你如何打印結果,成爲空值?發佈整個代碼... – ppeterka

回答

-4

首先是java的命名約定 - 對變量和方法使用小寫字母。

然後你切換爲卡和西裝的。長度的方法,所以你應該有這樣的:

String Suit = PossCards[rand.nextInt(PossCards.length)]; 
String Card = PossSuits[rand.nextInt(PossSuits.length)]; 

工作示例看起來像這樣(不知道,爲什麼你的例子不工作 - 可能的誤差在您的驗證碼與我們didnt份額):

public class JavaApplication8 { 

    public static String[] possCards = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"}; 
    public static String[] possSuits = new String[]{"C", "S", "H", "D"}; 
    public static Random rand = new Random(); 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     while (1<2){ 
      System.out.println(card()); 
     } 
    } 

    public static String card() { 
     String suit = possSuits[rand.nextInt(possSuits.length)]; 
     String card = possCards[rand.nextInt(possCards.length)]; 

     return suit + card; 
    } 
} 
+0

這並不解決OP的問題。請注意,命名約定是一個建議,它不是答案的一部分。 –

+0

西裝從卡陣列仍然但不解釋爲什麼空值 –

+4

如果變量switcheroo是問題,IndexOutOfBoundsExceptions將被拋出,而不是空值。 – Willem

0

你得到PossCards的長度爲Po​​ssSuits ramdom數

你正在做的限制:

String Suit = PossCards[rand.nextInt(PossSuits.length)]; 
String Card = PossSuits[rand.nextInt(PossCards.length)]; 

,你應該做的:

String Card = PossCards[rand.nextInt(PossCards.length)]; 
String Suit = PossSuits[rand.nextInt(PossSuits.length)];