为什么我不能用条件运算符 (?:) 替换 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;
我一直在努力转
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;