java - 为什么不能在简写 IF 语句中进行条件赋值?
问题描述
我正在尝试更新我的 Blackjack 游戏的 softcount 以说明正在播放的 Aces(值 11 或 1)。使用短格式IF语句时,为什么第一行代码不正确,但第二行可以使用?这种 if 语句有限制吗?
(counter > 1) ? (softcount+=1) : (softcount+=value); // bad
softcount += (counter > 1) ? 1 : value; // good
解决方案
这就是语言的定义方式。
只有某些表达式 - 语句表达式 - 可以通过添加;
. (语句表达式+;
是一个表达式语句)。
从JLS Sec 14.8开始:
ExpressionStatement:
StatementExpression ;
StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
条件表达式不是语句表达式。
推荐阅读
- java - 如何在线程结束时处理我当前的 JFrame?
- c# - 如何获取空列表的值类型?
- python - 有没有办法在不安装 Qt 的情况下安装 jupyter?
- javascript - enctype 不能通过模式弹出窗口与 beginform 中的 id 一起使用
- javascript - 编写元素 ID 的不同方式?
- python - 在字典中获取函数值的一些问题
- swift - Xcode 10 存档应用程序无法在安装了 Xcode 9 或更早版本的 Mac 上运行:DYLD,[0x4] 符号丢失?
- python - 编写 pygame.keys[0] 时,它不采用 keys[0] 的值
- amazon-web-services - 使用 CloudFront 时的 AWS 裸域重定向
- html - 从段落中选择 n+4 个跨度