Java 运算符+;未为参数类型ChatColor int定义
我正在编写一个minecraft插件。我有个小问题。因此,我们有: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个用户。除了这里的这个小问题,一切似乎都很正常。您的+运算符得到
int ok = Integer.parseInt(test) - 1;
lores.set(1, ChatColor.RED + ok);
现在问题是,第二行有个错误。
+
运算符对于ChatColor
和int
未定义。intok
所做的是,它从他们手中物品的地雷工艺知识中减去一个数字。说他们的物品是一根棍子,上面有剩余的知识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.useChatColor.RED.toString()+String.valueOf(ok)
。那么它应该会起作用。+-运算符仅用于加法。当java遍历您的代码并找到两个字符串时,它会连接您的字符串。如果加法的第一个操作数是字符串,java会将第二个操作数转换为字符串并将其合并。将ChatColor转换为字符串可以解决问题,但是为了代码的可读性,您也应该将ok
转换为字符串。哇!感谢您的帮助和所有信息。非常有用,可以在将来帮助我解决这些问题:)@Jojodmo“”+ChatColor.RED+ok
也可以,第一个“”+ChatColor.RED
将构造字符串串联序列。但是,这定义了一个空字符串文字,这是一个次优操作。