Java 运算符+;未为参数类型ChatColor int定义

Java 运算符+;未为参数类型ChatColor int定义,java,operator-keyword,minecraft,bukkit,Java,Operator Keyword,Minecraft,Bukkit,我正在编写一个minecraft插件。我有个小问题。因此,我们有: int ok = Integer.parseInt(test) - 1; lores.set(1, ChatColor.RED + ok); 现在问题是,第二行有个错误。+运算符对于ChatColor和int未定义。intok所做的是,它从他们手中物品的地雷工艺知识中减去一个数字。说他们的物品是一根棍子,上面有剩余的知识5次使用。现在说他们右击它。它将显示剩余的4个用户。除了这里的这个小问题,一切似乎都很正常。您的+运算符得到

我正在编写一个minecraft插件。我有个小问题。因此,我们有:

int ok = Integer.parseInt(test) - 1;
lores.set(1, ChatColor.RED + ok);

现在问题是,第二行有个错误。
+
运算符对于
ChatColor
int
未定义。int
ok
所做的是,它从他们手中物品的地雷工艺知识中减去一个数字。说他们的物品是一根棍子,上面有剩余的知识
5次使用。现在说他们右击它。它将显示剩余的4个用户。除了这里的这个小问题,一切似乎都很正常。

您的
+
运算符得到两个操作数,一个
ChatColor
对象(
object
)和
ok
int
)。据

如果
+
运算符的任一操作数的类型为,则该操作为字符串串联

否则,
+
运算符的每个操作数的类型必须是可转换()为基元数字类型的类型,否则会发生编译时错误。

因此,
+
操作员可操作的
对象
之间的唯一操作将是:

  • String
    +(任何内容,包括
    null
  • 当两个操作数都是
    Number
    的子类型或基元数值时
。。。这里的情况并非如此,因此您会因为无效语法而得到编译时错误:
ChatColor.RED+ok

您可以修复此操作,并使用以下任一方法正确连接字符串:

ChatColor.RED.toString() + ok
or
ChatColor.RED + Integer.toString(ok)
ChatColor.RED.toString()+正常
或

ChatColor.RED+Integer.toString(ok)
问题在于
lore()
的参数是字符串。 因此,您需要这样做:

lore.set(1, ChatColor.RED + "" + ok);

现在它应该可以工作了。

lores.set、int和int的输入参数是什么?您不能将1添加到ChatColor.use
ChatColor.RED.toString()+String.valueOf(ok)
。那么它应该会起作用。+-运算符仅用于加法。当java遍历您的代码并找到两个字符串时,它会连接您的字符串。如果加法的第一个操作数是字符串,java会将第二个操作数转换为字符串并将其合并。将ChatColor转换为字符串可以解决问题,但是为了代码的可读性,您也应该将
ok
转换为字符串。哇!感谢您的帮助和所有信息。非常有用,可以在将来帮助我解决这些问题:)@Jojodmo
“”+ChatColor.RED+ok
也可以,第一个
“”+ChatColor.RED
将构造字符串串联序列。但是,这定义了一个空字符串文字,这是一个次优操作。