2015-06-09 74 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