Java中的枚举打印问题

Java中的枚举打印问题,java,Java,我声明了一个enumCard,它有一个getValue方法,该方法返回一个int表示,表示每一张卡(俱乐部、红心等)。我注意到我无法在下面的语句中使用+运算符,因为编译器认为我正在使用两种不兼容的类型执行add操作 为什么编译器在这里不自动重载?我可以显示此信息的唯一方法是,如果我在两者之间填充一个“,则接受currentCard+”+currentCard.getValue()。有什么办法可以解决这个问题吗 for(Card currentCard: Card.values())

我声明了一个
enum
Card
,它有一个
getValue
方法,该方法返回一个
int
表示,表示每一张
卡(俱乐部、红心等)。我注意到我无法在下面的语句中使用
+
运算符,因为编译器认为我正在使用两种不兼容的类型执行add操作

为什么编译器在这里不自动重载?我可以显示此信息的唯一方法是,如果我在两者之间填充一个
,则接受
currentCard+”+currentCard.getValue()
。有什么办法可以解决这个问题吗

for(Card currentCard: Card.values())  
    System.out.println(currentCard+ currentCard.getValue());

您必须说服java编译器您正在使用字符串,编译器无法在查看枚举和int时自动找出这一点。我个人会使用:

"" + currentCard + currentCard.getValue()

您可以覆盖
toString()
,如所见的
示例中所示。那么你所需要的就是:

 System.out.println(currentCard);

您遇到的问题很简单,当有一个字符串作为要添加到一起的项之一时,加号运算符只进行字符串连接。没有什么能让它仅仅因为在println中就假定为字符串

这就是为什么一旦抛出一个空字符串,它就会将其视为字符串连接,并将每个项的字符串表示形式连接在一起。否则,您将向int添加类型为Card的对象

因此,解决它,只需执行以下操作:

System.out.println(currentCard.toString() + currentCard.getValue());
我认为使用toString()比在其中添加“+”更清楚。