2012-03-13 55 views
0

過去幾天我一直在爲此奮戰,希望有人能提供一些指導。第一次使用Java處理數組,並且在學習Java的時間只有2個月。要溫柔。 :)使用數組創建DeckOfCards類

在我看來,我創建了一個並行數組,其中cardInDeck [] []正在填充cardName(例如Ace,10,Jack)和suitName(例如Hearts,Spades等) 。雖然我的方法輸出以及我認爲〜寫入數組的內容與預期的一樣,但在打印出數組內容時,出現了一些異常結果。

如果那些意外的結果是因爲我在聲明它的時候不正確地構造數組,我試圖縮小範圍,如果我試圖創建一個對上帝和自然(或者至少是Java)可惡的數組,或者如果數組是正確的,但我不知道如何打印內容。

任何幫助你可以提供將不勝感激。提前致謝!

代碼和結果顯示在下面。

import java.util.*; 
import java.lang.*; 
// 
public class DeckOfCards 
{ 
    public static void main(String[] args) 
    { 
     int rank; 
     int suit; 
// 
    for(rank=1;rank<14;rank++) 
    { 
     String tempCardName = Integer.toString(rank); 
     String cardName; 
     if(rank==1) 
     cardName="Ace"; 
     else 
     if(rank==13) 
     cardName="King"; 
     else 
     if(rank==12) 
     cardName="Queen"; 
     else 
     if(rank==11) 
     cardName="Jack"; 
     else 
     cardName=tempCardName; 
// 
     for(suit=1;suit<5;suit++) 
     { 
     String suitName; 
     switch(suit) 
     {case 1: 
    suitName = "Spades"; 
    break; 
    case 2: 
    suitName = "Hearts"; 
    break; 
    case 3: 
    suitName = "Clubs"; 
    break; 
     case 4: 
    suitName = "Diamonds"; 
    break; 
    default: 
    suitName = "Error";} 
     String tempCardInDeck=(cardName + " of " + suitName); 
     System.out.print("method output: " tempCardInDeck); 
//* 
     String[][] cardInDeck = new String[][] 
      { 
      {cardName,suitName} 
      }; 
     System.out.print(" /// to array: " + cardName + " " + suitName); 
     System.out.println(" /// from array: " + Arrays.toString(cardInDeck)); 
    } 
    } 
    } 
} 

結果:

method output: Ace of Spades /// to array: Ace Spades /// from array: [[Ljava.lang.String;@9ffb18] 
method output: Ace of Hearts /// to array: Ace Hearts /// from array: [[Ljava.lang.String;@11de914] 
method output: Ace of Clubs /// to array: Ace Clubs /// from array: [[Ljava.lang.String;@b1406b] 
method output: Ace of Diamonds /// to array: Ace Diamonds /// from array: [[Ljava.lang.String;@fc5408] 
method output: 2 of Spades /// to array: 2 Spades /// from array: [[Ljava.lang.String;@1f102c1] 
method output: 2 of Hearts /// to array: 2 Hearts /// from array: [[Ljava.lang.String;@1ec0130] 
method output: 2 of Clubs /// to array: 2 Clubs /// from array: [[Ljava.lang.String;@1420fea] 
method output: 2 of Diamonds /// to array: 2 Diamonds /// from array: [[Ljava.lang.String;@230be4] 
method output: 3 of Spades /// to array: 3 Spades /// from array: [[Ljava.lang.String;@e1e567] 
method output: 3 of Hearts /// to array: 3 Hearts /// from array: [[Ljava.lang.String;@9bfee2] 
method output: 3 of Clubs /// to array: 3 Clubs /// from array: [[Ljava.lang.String;@17aaeec] 
method output: 3 of Diamonds /// to array: 3 Diamonds /// from array: [[Ljava.lang.String;@1721a26] 
method output: 4 of Spades /// to array: 4 Spades /// from array: [[Ljava.lang.String;@12db7c] 
method output: 4 of Hearts /// to array: 4 Hearts /// from array: [[Ljava.lang.String;@7c28c] 
method output: 4 of Clubs /// to array: 4 Clubs /// from array: [[Ljava.lang.String;@17588d5] 
method output: 4 of Diamonds /// to array: 4 Diamonds /// from array: [[Ljava.lang.String;@16a7c99] 
method output: 5 of Spades /// to array: 5 Spades /// from array: [[Ljava.lang.String;@1a5d08] 
method output: 5 of Hearts /// to array: 5 Hearts /// from array: [[Ljava.lang.String;@d1c9b5] 
method output: 5 of Clubs /// to array: 5 Clubs /// from array: [[Ljava.lang.String;@111c3f0] 
method output: 5 of Diamonds /// to array: 5 Diamonds /// from array: [[Ljava.lang.String;@156f14c] 
method output: 6 of Spades /// to array: 6 Spades /// from array: [[Ljava.lang.String;@fbd1fc] 
method output: 6 of Hearts /// to array: 6 Hearts /// from array: [[Ljava.lang.String;@973678] 
method output: 6 of Clubs /// to array: 6 Clubs /// from array: [[Ljava.lang.String;@1791620] 
method output: 6 of Diamonds /// to array: 6 Diamonds /// from array: [[Ljava.lang.String;@9ba632] 
method output: 7 of Spades /// to array: 7 Spades /// from array: [[Ljava.lang.String;@bc5245] 
method output: 7 of Hearts /// to array: 7 Hearts /// from array: [[Ljava.lang.String;@1bd523d] 
method output: 7 of Clubs /// to array: 7 Clubs /// from array: [[Ljava.lang.String;@6250d2] 
method output: 7 of Diamonds /// to array: 7 Diamonds /// from array: [[Ljava.lang.String;@a8198c] 
method output: 8 of Spades /// to array: 8 Spades /// from array: [[Ljava.lang.String;@25753d] 
method output: 8 of Hearts /// to array: 8 Hearts /// from array: [[Ljava.lang.String;@1341183] 
method output: 8 of Clubs /// to array: 8 Clubs /// from array: [[Ljava.lang.String;@169cccc] 
method output: 8 of Diamonds /// to array: 8 Diamonds /// from array: [[Ljava.lang.String;@10469e8] 
method output: 9 of Spades /// to array: 9 Spades /// from array: [[Ljava.lang.String;@c4fedd] 
method output: 9 of Hearts /// to array: 9 Hearts /// from array: [[Ljava.lang.String;@138847d] 
method output: 9 of Clubs /// to array: 9 Clubs /// from array: [[Ljava.lang.String;@1826ac5] 
method output: 9 of Diamonds /// to array: 9 Diamonds /// from array: [[Ljava.lang.String;@12fb063] 
method output: 10 of Spades /// to array: 10 Spades /// from array: [[Ljava.lang.String;@1e55d39] 
method output: 10 of Hearts /// to array: 10 Hearts /// from array: [[Ljava.lang.String;@14b525c] 
method output: 10 of Clubs /// to array: 10 Clubs /// from array: [[Ljava.lang.String;@c4c05] 
method output: 10 of Diamonds /// to array: 10 Diamonds /// from array: [[Ljava.lang.String;@1530551] 
method output: Jack of Spades /// to array: Jack Spades /// from array: [[Ljava.lang.String;@18235a1] 
method output: Jack of Hearts /// to array: Jack Hearts /// from array: [[Ljava.lang.String;@18ee2ee] 
method output: Jack of Clubs /// to array: Jack Clubs /// from array: [[Ljava.lang.String;@1d48043] 
method output: Jack of Diamonds /// to array: Jack Diamonds /// from array: [[Ljava.lang.String;@30cd64] 
method output: Queen of Spades /// to array: Queen Spades /// from array: [[Ljava.lang.String;@1fc9fee] 
method output: Queen of Hearts /// to array: Queen Hearts /// from array: [[Ljava.lang.String;@67f797] 
method output: Queen of Clubs /// to array: Queen Clubs /// from array: [[Ljava.lang.String;@1b01949] 
method output: Queen of Diamonds /// to array: Queen Diamonds /// from array: [[Ljava.lang.String;@4c2849] 
method output: King of Spades /// to array: King Spades /// from array: [[Ljava.lang.String;@1e8f2a0] 
method output: King of Hearts /// to array: King Hearts /// from array: [[Ljava.lang.String;@90f19c] 
method output: King of Clubs /// to array: King Clubs /// from array: [[Ljava.lang.String;@1e67280] 
method output: King of Diamonds /// to array: King Diamonds /// from array: [[Ljava.lang.String;@675039] 
+0

Erm爲什麼不只是有一個整數的數組,比如1到52,然後是一個映射函數, 6 =六個俱樂部。保存你自己的各種心痛。 – 2012-03-13 17:57:03

+0

@託尼霍普金森:很好的問題。我認爲這與我們的教練折磨我們有關。 :) – dwwilson66 2012-03-13 18:53:02

+0

啊,這將解釋它。無知的學術罷工再次..... – 2012-03-15 14:43:57

回答

0

你在輸出看到的是toString默認實現。從the documentationArrays

返回指定數組內容的字符串表示形式。如果數組包含其他數組作爲元素,則它們將通過從Object繼承的Object.toString()方法轉換爲字符串,該方法描述其身份而不是其內容。

因爲它是從Object,你會得到的是默認版本...

Object類的toString方法返回一個由類的名稱,其對象是一串一個實例,符號字符「@」和對象的哈希代碼的無符號十六進制表示。

正如在另一個答案中建議,Arrays.deepToString應該是你在追求什麼。這對我來說實際上是一個新的,所以我會爲自己嘗試一下。

+0

聖牛。 Arrays.deepToString真棒!感謝所有...... – dwwilson66 2012-03-13 18:55:53

1

如果你要打印數組的內容,你應該使用Arrays.deepToString(cardInDeck)代替Arrays.toString(cardInDeck)

+0

除了chooban,我不知道Arrays.deepToString - 很好的功能。 – 2012-03-13 18:12:02

0

實施一副牌的另一種方法是使用枚舉,它允許編譯器執行類型檢查對你來說,一個非常好的做法。請參閱Oracle's Java Tutorials以獲取這些鏈接處的cardsdeckdisplay的示例。

+0

感謝您的鏈接!剛花了幾個小時探索這些。我喜歡Java教程中所有隱藏的角落和縫隙,希望我有時間去探索它們。 – dwwilson66 2012-03-14 02:21:51

+0

不客氣。請享用。 Java中的枚舉非常強大,因爲每個枚舉都是一個類,並且可以完成其他類可以完成的大部分工作。它們不僅僅是C中的整數。對於它們的強大功能的一個很好的例子,請查看Java附帶的TimeUnit枚舉的代碼。它確實使用了枚舉的OO功能。 Joshua Block的書「Effective Java」介紹了使用枚舉的一些最佳方法。 – 2012-03-14 13:55:53