Java 为什么可以';你不能用简写的IF语句进行条件赋值吗?
我正在尝试更新21点游戏的softcount,以说明正在玩的ACE(值11或1)。当使用简短形式的IF语句时,为什么第一行代码不正确,而第二行可以使用?这种类型的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 三元必须被视为评估某事物的一种方法,而不是应用处理的一种方法。 所以它希望在?之后有
(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