java - 为什么不能用简写 IF 语句进行条件赋值?

标签 java if-statement shorthand

我正在尝试更新我的 Blackjack 游戏的软计数,以考虑正在玩的 Ace(值 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 - 为什么不能用简写 IF 语句进行条件赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55866287/

相关文章:

java - 循环和/或 if else 双返回

html - 我的字体速记不起作用,其中包括字体大小和字体粗细属性

javascript - .indexOf() 之前的 -~ 是什么意思?

java - Apache POI - 在数据库中读取和存储富文本内容

php - 有没有更好的方法来使用 PHP 定义 if() 条件?

java - 使用不可序列化的对象序列化 hashmap

c - 为什么编译器没有警告我空的 if 语句?

javascript - 为像 php 这样的键填充一个 javascript 数组速记

java - 将 SmbFile 转换为 Java 文件

java - 如何在 spring 批处理作业中更改 ItemWriter 目标文件名?