Java 为什么可以';你不能用简写的IF语句进行条件赋值吗?

Java 为什么可以';你不能用简写的IF语句进行条件赋值吗?,java,if-statement,shorthand,Java,If Statement,Shorthand,我正在尝试更新21点游戏的softcount,以说明正在玩的ACE(值11或1)。当使用简短形式的IF语句时,为什么第一行代码不正确,而第二行可以使用?这种类型的if语句是否有限制 (counter > 1) ? (softcount+=1) : (softcount+=value); // bad softcount += (counter > 1) ? 1 : value; // good 三元必须被视为评估某事物的一种方法,而不是应用处理的一种方法。 所以它希望在?之后有

我正在尝试更新21点游戏的softcount,以说明正在玩的ACE(值11或1)。当使用简短形式的IF语句时,为什么第一行代码不正确,而第二行可以使用?这种类型的if语句是否有限制

(counter > 1) ? (softcount+=1) : (softcount+=value); // bad


softcount += (counter > 1) ? 1 : value; // good

三元必须被视为评估某事物的一种方法,而不是应用处理的一种方法。
所以它希望在
之后有一些表达式,但您在第一个代码中编写了语句:
softcount+=1
(softcount+=value)

在第二个代码中,这是可以的,因为您指定了两个表达式:
1
value

此外,你真的觉得这个代码很简单吗

(counter > 1) ? (softcount+=1) : (softcount+=value); // bad
重复增量部分

在您的案例中,您想要的只是:

if (counter > 1) { softcount+=1;} else {softcount+=value;)

这只是语言的定义方式

只有某些表达式—语句表达式—可以通过添加
,生成语句。(语句表达式+
是一个表达式语句)

发件人:


条件表达式不是语句表达式。

它被称为三元运算符,当您只想基于条件返回值时使用它。它的主要目的是为了避免简单估值的if-else。在您的情况下,您应该使用if-else

这不是一个简单的if语句,所以你的前提是错误的开始。
ExpressionStatement:
  StatementExpression ;

StatementExpression:
  Assignment 
  PreIncrementExpression 
  PreDecrementExpression 
  PostIncrementExpression 
  PostDecrementExpression 
  MethodInvocation 
  ClassInstanceCreationExpression