Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java三元运算符与同变量赋值_Java_Syntax Error_Ternary Operator - Fatal编程技术网

Java三元运算符与同变量赋值

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中的“>”操作符处抛出一个错误,称为“令牌上的语法错误”>,->应

我创建了一个类,用作在游戏中创建具有耐久性的项目(很像Minecraft中的镐或剑)的主干,在创建包含三元运算符的方法时遇到了一个错误:

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是合法的?(最大耐久性=最大耐久性):(最大耐久性=新最大)但没什么意义。