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
类型被视为int
。 char
类型支持算术运算,所以可以相加。因此,当您使用 + 运算符时,它会将它们的值相加。但是因为 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();
这里只创建一个对象,解决目的
我的 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
类型被视为int
。 char
类型支持算术运算,所以可以相加。因此,当您使用 + 运算符时,它会将它们的值相加。但是因为 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();
这里只创建一个对象,解决目的