我正在尝试为我的二十一点游戏更新软计数,以说明正在播放的Ace(值11或1)。使用简短的IF语句时,为什么第一行代码不正确,但是第二行可以使用?这种if语句是否受限制?
(counter > 1) ? (softcount+=1) : (softcount+=value); // bad
softcount += (counter > 1) ? 1 : value; // good
答案 0 :(得分:1)
必须将三元视为评估某些事物的一种方法,而不是将其应用于处理的一种方法。
因此,它期望在?
之后有一些表达式,但是您在第一个代码中写了语句softcount+=1
和(softcount+=value)
。
在第二个代码中,这是可以的,因为您指定了两个表达式:1
和value
。
此外,您真的可以很方便地找到此代码吗?
(counter > 1) ? (softcount+=1) : (softcount+=value); // bad
您重复增量部分。
您所需要的只是:
if (counter > 1) { softcount+=1;} else {softcount+=value;)
答案 1 :(得分:1)
这是语言的简单定义。
通过添加;
,只能将某些表达式(语句表达式)制成语句。 (语句表达式+ ;
是表达式语句)。
来自JLS Sec 14.8:
ExpressionStatement:
StatementExpression ;
StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
条件表达式不是语句表达式。
答案 2 :(得分:0)
它称为三元运算符,仅在您想根据条件返回值时使用。它的主要目的是避免进行简单评估。在您的情况下,应使用if else。