Java三元运算符与同变量赋值
我创建了一个类,用作在游戏中创建具有耐久性的项目(很像Minecraft中的镐或剑)的主干,在创建包含三元运算符的方法时遇到了一个错误:Java三元运算符与同变量赋值,java,syntax-error,ternary-operator,Java,Syntax Error,Ternary Operator,我创建了一个类,用作在游戏中创建具有耐久性的项目(很像Minecraft中的镐或剑)的主干,在创建包含三元运算符的方法时遇到了一个错误: public void setMaxDurability(int newMax) { newMax > MAX_DURABILITY ? maxDurability = MAX_DURABILITY : maxDurability = newMax; } 这段代码在Eclipse中的“>”操作符处抛出一个错误,称为“令牌上的语法错误”>,->应
public void setMaxDurability(int newMax) {
newMax > MAX_DURABILITY ? maxDurability = MAX_DURABILITY : maxDurability = newMax;
}
这段代码在Eclipse中的“>”操作符处抛出一个错误,称为“令牌上的语法错误”>,->应为。为了澄清,newMax是将变量MAX耐久性设置为的新的最大持久性,但它不能大于常量MAX_耐久性。所有类型都是int(常量是final),所以我不明白问题是什么
我成功地用这个方法工作
public int setMaxDurability(int newMax) {
return maxDurability = (newMax > MAX_DURABILITY ? MAX_DURABILITY : newMax);
}
但我想知道为什么第一个代码块不起作用。有什么帮助吗?应该是:
public void setMaxDurability(int newMax) {
maxDurability = newMax > MAX_DURABILITY ? MAX_DURABILITY : newMax;
}
操作顺序<代码>?和
:
在=
之前。所以你尝试的是有效的(newMax>MAX\u耐久性?MAX耐久性)=(MAX\u耐久性:MAX耐久性)=newMax
一点意义都没有。顺便说一下,您不需要将返回类型更改为int
。您可以将其保留为void
,然后删除返回项。我知道我不必更改返回类型,这只是我在尝试调试后忘记切换回的东西。所以我假设你必须总是在三元运算符之外赋值?不,实际上写newMax>MAX\u是合法的?(最大耐久性=最大耐久性):(最大耐久性=新最大)代码>但没什么意义。