繁体   English   中英

Java:如何在另一个类中使用一个类的toString()方法?

[英]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类,则CardtoString()可能类似于:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM