对于参数类型ChatColor,int,运算符+未定义

时间:2014-11-06 14:06:57

标签: java operator-keyword minecraft bukkit

我正在编写一个Minecraft插件。我有一个小问题。所以我们有这个:

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

现在的问题是,第二行出现了错误。 +ChatColor未定义int运算符。 int ok所做的是,它从他们手中的项目的Minecraft传说中减去一个数字。说他们的项目是传说5 uses remaining!的坚持。现在说他们右击它。它将说剩下4种用途。除了这个小问题之外,一切似乎都很有效..

2 个答案:

答案 0 :(得分:4)

您的+运算符有两个操作数,一个ChatColor对象(Object)和okint)。根据{{​​3}}

  

如果+运算符的任一操作数的类型为The Java Language Specification §15.18,则操作为字符串连接。

     

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

因此,Object运算符可操作的+之间的唯一操作将是:

  • String +(任何内容,包括null
  • 当两个操作数都是Number的子类型或原始数值时。

...这不是这种情况,因此您会因无效语法而遇到编译时错误:ChatColor.RED + ok

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

ChatColor.RED.toString() + ok
or
ChatColor.RED + Integer.toString(ok)

答案 1 :(得分:0)

问题是lore()的参数是一个字符串。 所以你需要这样做:

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

现在应该可以了。