2015-06-09 72 views
0

我想通過任務工作,目前難倒我的問題可能是什麼。我已經閱讀了幾篇文章,並試圖解決沒有成功。我知道很多我的代碼可以簡化,但這是通過這麼一個很多東西還沒有被覆蓋的文字進展...循環陣列只是打印classname @ hascode

這是我的卡類

import java.util.Random; 

public class Card { 
    private int suit,face; 
    private String cardS,cardF; 

    // Default constructor to generate random number for face and suit 
    public Card() 
    { 
     Random rand = new Random(); 
     suit = rand.nextInt(4)+1; 
     face = rand.nextInt(13)+1; 
    } 

    // Receive card and suit values 
    public Card(int cardSuit, int cardFace) { 
     suit = cardSuit; 
     face = cardFace; 

    // Define card face and suit values 

     if(suit == 1){ 
      cardS = "Clubs";    
     } 
     else if(suit == 2){ 
      cardS = "Hearts";   
     } 
     else if(suit == 3){ 
      cardS = "Spades";   
     } 
     else if(suit == 4){ 
      cardS = "Diamonds";   
     } 

     if(face == 1){ 
      cardF = "Ace"; 
     } 
     else if(face == 2){ 
      cardF = "2"; 
     } 
     else if(face == 3){ 
      cardF = "3"; 
     } 
     else if(face == 4){ 
      cardF = "4"; 
     } 
     else if(face == 5){ 
      cardF = "5"; 
     } 
     else if(face == 6){ 
      cardF = "6"; 
     } 
     else if(face == 7){ 
      cardF = "7"; 
     } 
     else if(face == 8){ 
      cardF = "8"; 
     } 
     else if(face == 9){ 
      cardF = "9"; 
     } 
     else if(face == 10){ 
      cardF = "10"; 
     } 
     else if(face == 11){ 
      cardF = "Jack";   
     } 
     else if(face == 12){ 
      cardF = "Queen"; 
     } 
     else if(face == 13){ 
      cardF = "King"; 
     } 
     //return cardF + " of " + cardS; 
    } 

    // Get numerical face value 
    public int getNumericFace(){ 
     return face;   
    } 

    // Get numerical suit value 
    public int getNumericSuit(){ 
     return suit;   
    } 

} 

這我的DeckOfCards類

public class DeckOfCards { 
    public static final int MAXDECK = 52; 
    int remainingDeck,suit,face; 
    String cardS,cardF; 
    private int myCard; 
    int cardIndex; 
    Card[] cardDeck; 
    public DeckOfCards() { 


     cardDeck = new Card[MAXDECK]; 

     // Create array of 52 cards 
     // outer loop cardSuit 
     // inner loop cardFace 
     int index = 0; 
     int maxSuit = 4; 
     int maxFace = 13; 


     for (int cardSuit = 1 ; cardSuit <= maxSuit ; cardSuit++) 
     { 
      for (int cardFace = 1 ; cardFace <= maxFace ; cardFace++) 
      { 
       cardDeck[index] = new Card(cardSuit,cardFace); 
       index++; 
      } 
     } 
    } 

    public String getArray() 
    { 
     System.out.println(cardDeck[0]); 
     for (int i = 0 ; i < cardDeck.length ; i++) 
     { 
      System.out.println(cardDeck[i]); 
     } 
     return ""; 
    } 

    public String toString() 
    { 
     String deckAsString = ""; 
     int i=0; 

     for (int s = 1; s <= 4 ; s++) 
     { 
      for (int c = 1 ; c <= 13 ; c++) 
      { 
       deckAsString += (cardDeck[i] + ""); 
       i++; 
      } 
      deckAsString += "\n"; 
     } 

     return (deckAsString); 

    } 


} 

這是我的主類...在這裏運行這兩種方法都有問題。

public class MainDeck { 

    public static void main(String[] args) { 

     DeckOfCards game = new DeckOfCards(); 

     System.out.println("test getArray method"); 
     System.out.println(game.getArray()); 
     System.out.println("test toString method"); 
     System.out.println(game.toString()); 
    } 

} 

感謝您的幫助!

+0

你有什麼問題?你的問題是什麼? – pcnate

+0

對不起......看起來像我忽略粘貼實際問題.... toString()中的輸出是class @ hash表示。 – abok

回答

0

正如DeckOfCards您的toString方法是使用cardDeck數組對象,並將它們添加到返回的字符串:

  deckAsString += (cardDeck[i] + ""); 

所以,你需要重寫toString方法Card類也和字符串操作中使用它。

+0

不幸的是,重載方法直到下一章纔會涉及,所以我必須找到解決這個問題的方法。 – abok

+0

對不起,直到下一章纔會講述'重寫'方法。 – abok

0

請在Card課中實施toString()方法。

+0

是的,謝謝。我意識到,幾個小時後發佈... 此處修改: \t \t'//定義牌面和花色,如果(西裝值 \t \t公共字符串getCard() \t \t { \t \t \t == 0 ){ \t \t \t \t cardS =「Clubs」;' – abok