2017-01-10 10 views
-2

私はこのようになりますカードのクラスを持っている:toStringメソッド

public class Card 
{ 
    //instance variables 
    private String faceValue; //the face value of the card 
    private String suit; //the suit of the card 
    String[] ranks = {"Ace", "2", "3", "4", "5", "6","7", "8", "9", "10", "Jack", "Queen", "King"}; 
    String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"}; 

    /** 
    * Constructor 
    */ 
    public Card() 
    { 
     for (int i = 0; i < 13; i++) 
     { 
      for (int j = 0; j < 4; j++) 
      { 
       faceValue = ranks[i]; 
       suit = suits[j]; 
      } 
     } 
    } 

    //getters 
    /** 
    * Getter for faceValue. 
    */ 
    public String getFaceValue() 
    { 
     return faceValue; 
    } 

    /** 
    * Getter for suit. 
    */ 
    public String getSuit() 
    { 
     return suit; 
    } 
    //end of getters 

    //methods 
    /** 
    * This method returns a String representation of a Card object. 
    * 
    * @param none 
    * @return String 
    */ 
    public String toString() 
    { 
     return "Dealed a card: " + faceValue + " of " + suit; 
    } 
} 

、配列を作成するために、カードのクラスを使用して別のデッキクラス:

public class Deck 
{ 
    //instance variables 
    private Card[] deck; 

    /** 
    * Constructor for objects of class Deck 
    */ 
    public Deck() 
    { 
     deck = new Card[52]; 
    } 

    /** 
    * String representation. 
    */ 
    public String toString() 
    { 
     return "Dealed a card: " + deck.getFaceValue() + " of " + deck.getSuit(); 
    } 
} 

私のtoStringメソッドがあります私に "シンボルを見つけることができません - メソッドgetFaceValue()"というエラーを与えます。 getSuit()と同じです。なぜどんなアイデア?ここ

+2

'deck'は' Card'配列ではなく 'Card'配列です。配列には2つのメソッドがありません。 – resueman

+3

配列にはメソッドがありません。配列の要素にはメソッドがあります。 – bmargulies

+1

'Arrays.toString(deck)'を返すだけで、すべてのカードの文字列のリストを得ることができます。 –

答えて

0

あなたの問題にはいくつかの可能な解決策を示唆して:全体のデッキを通して

public String toString() 
{ 
    return Arrays.toString(deck); 
} 

またはループのため

public String toString() 
{ 
    String deckInStringForm = "[ "; 
    for(int indexOfCard = 0; indexOfCard < deck.length; indexOfCard++) 
    { 
     deckInStringForm += deck[indexOfCard] + " "; 
    } 
    deckInStringForm += "]"; 

    return deckInStringForm; 
} 

または変更/そう

のようなインデックスを取るために機能を追加
public String toString(int index) 
{ 
    return "Card " + index + ": " + deck[index].toString(); 
} 
1

deckは、Card[] deckの配列です。したがって、getFaceValue()メソッドもgetSuit()メソッドも呼び出すことはできません。これらの2つのメソッドはCardクラスの一部であり、Cardの配列ではないからです。

関連する問題