首页 > 解决方案 > 为什么不能在简写 IF 语句中进行条件赋值?

问题描述

我正在尝试更新我的 Blackjack 游戏的 softcount 以说明正在播放的 Aces(值 11 或 1)。使用短格式IF语句时,为什么第一行代码不正确,但第二行可以使用?这种 if 语句有限制吗?

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


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

标签: javaif-statementshorthand

解决方案


这就是语言的定义方式。

只有某些表达式 - 语句表达式 - 可以通过添加;. (语句表达式+;是一个表达式语句)。

JLS Sec 14.8开始:

ExpressionStatement:
  StatementExpression ;

StatementExpression:
  Assignment 
  PreIncrementExpression 
  PreDecrementExpression 
  PostIncrementExpression 
  PostDecrementExpression 
  MethodInvocation 
  ClassInstanceCreationExpression

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


推荐阅读