为什么我不能用条件运算符(?:)替换if语句?

enh*_*ack 2 java conditional if-statement ternary-operator

我一直在努力转向

private PlaneClass preferredClass;

if (preferredClass == PlaneClass.FIRST_CLASS)
    preferredClass = PlaneClass.ECONOMY_CLASS;
else
    preferredClass = PlaneClass.FIRST_CLASS;
Run Code Online (Sandbox Code Playgroud)

preferredClass == PlaneClass.FIRST_CLASS ? 
                preferredClass = PlaneClass.ECONOMY_CLASS 
                               : preferredClass = PlaneClass.FIRST_CLASS;
Run Code Online (Sandbox Code Playgroud)

if语句编译.条件运算符没有.(错误消息:1.类型不匹配:无法从PlaneClass转换为布尔2.令牌上的语法错误"=".还有另外两个错误......).我哪里做错了?

khe*_*ood 10

语法是:

condition ? value1 : value2;
Run Code Online (Sandbox Code Playgroud)

condition ? statement1 : statement2;
Run Code Online (Sandbox Code Playgroud)

条件运算符是表达式,而不是语句.它不像语句那样执行语句if:它返回一个值.

你的意思是:

preferredClass = (preferredClass == PlaneClass.FIRST_CLASS ? 
            PlaneClass.ECONOMY_CLASS : PlaneClass.FIRST_CLASS);
Run Code Online (Sandbox Code Playgroud)