我在学习Java的同时正在研究这个项目,我创建了一个Card
类,它有一个 toString()方法但是当我试图转换一个Card
对Deck
类中的字符串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;
}
提出错误。
这是Card类:
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];
}
这是Deck课程:
d.fixed = true
答案 0 :(得分:3)
您无法将Card
对象强制转换为String
个对象。
您可以通过String
方法获取Card
对象的toString()
代表。
尝试以下
public String toString(int i){
return card[i].toString();
}
答案 1 :(得分:1)
调用返回卡[i]返回卡类型的对象。您必须实际调用toString()方法,以便返回对象是String而不是Card。希望这有帮助!
答案 2 :(得分: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();
}
然后甲板课程toString(int i)
可能如下:
public String toString(int i){
return card[i];
}
如果您将@Override
添加到Rank
和Suit
课程,则Card
课程toString()
可能如下所示:
public String toString(){
return "The " + cardRank + " of " + cardSuit;
}