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

Why can't I replace if statement with conditional operator (?:)?

我一直在努力转

private PlaneClass preferredClass;

if (preferredClass == PlaneClass.FIRST_CLASS)
    preferredClass = PlaneClass.ECONOMY_CLASS;
else
    preferredClass = PlaneClass.FIRST_CLASS;

进入

preferredClass == PlaneClass.FIRST_CLASS ? 
                preferredClass = PlaneClass.ECONOMY_CLASS 
                               : preferredClass = PlaneClass.FIRST_CLASS;

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

preferredClass = preferredClass == PlaneClass.FIRST_CLASS ? PlaneClass.ECONOMY_CLASS : PlaneClass.FIRST_CLASS;

会成功的

语法是:

condition ? value1 : value2;

没有

condition ? statement1 : statement2;

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

你的意思是:

preferredClass = (preferredClass == PlaneClass.FIRST_CLASS ? 
            PlaneClass.ECONOMY_CLASS : PlaneClass.FIRST_CLASS);

应该是

preferredClass == PlaneClass.FIRST_CLASS ? 
             PlaneClass.ECONOMY_CLASS 
                           :  PlaneClass.FIRST_CLASS;