[英]CodeHS: How use one class's toString method in another class's toString multiple times
[英]Java: How to use the toString() method of one class in an other one?
我在学习Java时正在从事这个项目,我创建了一个具有toString()方法的Card
类,但是当我尝试在Deck
类中将Card
对象转换为String时,却遇到了错误 。
这是Card类:
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;
}
这是Deck类:
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];
}
您不能将Card
对象转换为String
对象。
您可以通过toString()
方法获取Card
对象的String
表示形式。
尝试如下
public String toString(int i){
return card[i].toString();
}
调用返回卡[i]返回卡类型的对象。 您必须实际调用toString()方法,以便您的返回对象是String而不是Card。 希望这可以帮助!
如果每个类的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
and Suit
类,则Card
类toString()
可能类似于:
public String toString(){
return "The " + cardRank + " of " + cardSuit;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.