java - 在 java 澄清中使用 += 和三元运算符
问题描述
我正在为即将到来的考试做一些练习题,遇到了一个我和我的同学似乎都能理解的问题。如下:
其中所有变量都是 int 或 int 数组。
分数 += (rounds[i]) ? 我+开始:0
三元运算符如何在带有 += 的 java 中工作?这是我的理解:
所以它是 score += round[i] == i+start 或 == 0。
这是一个正确的理解吗?
亲切的问候,詹姆斯
解决方案
与运算符的任何组合一样,这是运算符优先级和(在运算符具有相同优先级的情况下)关联性的问题。在 Java 中,简单赋值和所有运算符/赋值运算符共享最低优先级。三元运算符是下一个更高优先级的唯一占用者。因此,您的表达式相当于
score += ((rounds[i]) ? (i + START) : 0)
也就是说,对三元表达式求值,其结果是+=
.
rounds[i]
正如其他人所观察到的那样,如果 of 的类型在 Java 中是无效的int
,尽管这在 C 中是可以的。但是如果rounds[i]
是一个数组,则表达式在 Java 中可能是明智的boolean
,或者可以像这样重写......
score += ((rounds[i] != 0) ? (i + START) : 0)
...假设需要对整数进行 C 风格的布尔解释rounds[i]
。
推荐阅读
- xcode - 在 UIViewControllerRepresentable 中传递数据
- swift - SwiftUI,使用 ForEach 的参数导致错误“无法推断闭包类型”
- jquery - 如何将图像文件和表单数据从 Ajax 传递到 MVC 控制器
- sql - BigQuery SQL:滚动计数在两个条件之间有界
- java - SpringBoot - Controller 和 RequestMapping 总是返回 404
- c - 数字高时数组迭代计算出错(结果=0)。但如果数字低,结果正确
- ms-access - 为什么最后在 MS Access 中选择第一个?
- hibernate - 删除关联@ManyToMany 并不总是在 Spring Data 中工作
- python - 优化此代码以查找和分解三角形数
- git - git rebase 之后:我发现另一个分离的主分支