Java: toString error "error: incompatible types: int cannot be converted to String"

Java: toString error "error: incompatible types: int cannot be converted to String"

我的 toString 需要快速帮助。这就涉及到打牌了。

public class Card
{
  //Data
  private int rank;
  private char rank2;
  private char suit;

  //more codes (constructor etc.)

  //toString
    public String toString ( )
    {
    if (rank == 11)
        rank2 = 'J';
    else if (rank == 12)
        rank2 = 'Q';
    else if (rank == 13)
        rank2 = 'K';
    else if (rank == 14)
        rank2 = 'A';
    else
        return rank2 + suit; // <----error here.
    }

我正在想办法 return 等级和花色。例如,如果某人要为等级输入 11,为花色输入 'S',那么我应该 return 一个 JS。但是,我 运行 出错了:

"error: incompatible types: int cannot be converted to String"

在Java中,char类型被视为intchar类型支持算术运算,所以可以相加。因此,当您使用 + 运算符时,它会将它们的值相加。但是因为 char 类型和 int 类型是不同的原始类型,所以它们不兼容算术运算。

如果需要字符串连接,则需要将代码更改为:

return String.valueOf(rank2) + String.valueOf(suit); 

将两个 char 相加实际上是将它们的 unicode 值和 returns 相加。如果您希望将它们连接在一起作为 String,请执行以下操作:

return rank2 + "" + suit;

这将形成一个 String 并将 suit 附加到 rank2 的末尾。因此,如果 rank2 是 'J' 并且 suit 是 'H',则将返回 "JH"。

问题是 char 可以作为 int 值读取。当尝试对字符执行算术函数时,它将使用字符的字节值。 Java 无法将 int 隐式转换为 String,因为 String 在 Java 中不被视为原始数据类型。您需要使用 String class 的 .valueOf() 方法来明确告诉 Java 您希望它作为 String.

String.valueOf(input_your_value_here);

最有效的方法如下

return new StringBuilder(rank2).append(suit).toString();

这里只创建一个对象,解决目的