2015-08-03 5 views
1

Я работаю над этим проектом во время обучения Java, я создал Card класс, который имеет ToString() метод, но когда я пытаюсь преобразовать Card объект в строку в Deck классе я получаю ошибка.Java: Как использовать метод toString() одного класса в другом?

Вот класс карты:

private final Rank cardRank; 
private final Suit cardSuit; 

public Card(Rank cardRank, Suit cardSuit){ 
    this.cardRank = cardRank; 
    this.cardSuit = cardSuit; 
} 

public String toString(){ 
    return "The " + cardRank + " of " + cardSuit; 
} 

Вот класс Колода:

private Card[] card = new Card[52]; 

public Deck(){ 
    int i = 0; 
    for(Suit suit: Suit.values()){ 
     for(Rank rank: Rank.values()){ 
      card[i++] = (new Card(rank, suit)); 
     } 
    } 
} 

public String toString(int i){ 
    return card[i]; 
}  
+2

Попробуйте использовать 'возврата карты [я] .ToString();' – MadProgrammer

+2

И ошибка .......? – immibis

+0

Я уверен, что эти методы должны войти внутрь каждого класса ... –

ответ

3

Вы не можете бросить Card объект в String объект.

Вы можете получить String объект Card с помощью метода toString().

Попробуйте, как показано ниже

public String toString(int i){ 
    return card[i].toString(); 
} 
+0

Спасибо, я сделал то, что вы сказали, и немного изменил: public void printDeck() { для (Карточка a: карта) System.out.println (a.toString()); } –

1

Вызов возврата карты [I] возвращает объект типа карты. Вы должны фактически вызвать метод toString(), чтобы ваш возвращаемый объект был строкой, а не картой. Надеюсь это поможет!

0

Если у toString() каждого вашего класса нет аннотации @Override, вам необходимо явно позвонить toString().

Пример:

return card[i].toString(); 
return "The " + cardRank.toString() + " of " + cardSuit.toString; 

Если добавить @Override аннотацию, как это:

@Override 
public String toString(){ 
    return "The " + cardRank.toString() + " of " + cardSuit.toString(); 
} 

Тогда класс Deck toString(int i) может выглядеть следующим образом:

public String toString(int i){ 
    return card[i]; 
} 

Если добавить @Override к Rank и Suit класс, то Card класс toString() может выглядеть следующим образом:

public String toString(){ 
    return "The " + cardRank + " of " + cardSuit; 
} 
Смежные вопросы