java - Java三元运算符的自增

标签 java increment ternary-operator

我正在编写小程序,想要通过循环访问数组中的元素。我需要为下一次迭代增加“数组索引”变量。

这是代码:

winner[turn] = subField[(int)Math.floor(i / 10.0)][i % 10].equalsIgnoreCase("O") ? false : winner[turn];
turn++;

是否可以用它编写一行代码?

PS:我正在尝试为自己少写几行。这是对大脑和逻辑的训练。

最佳答案

嗯,这是肯定可以做到的:

winner[turn] = subField[(int)Math.floor(i / 10.0)][i % 10].
                              equalsIgnoreCase("O") ^ winner[turn++];

看那里甚至没有三元运算符。

但这并不是因为它更短就更好(当然也不是更清晰)。因此,我建议您在以下几行中执行此操作:

String aSubField = subField[(int)Math.floor(i / 10.0)][i % 10];
if (aSubField.equalsIgnoreCase("O"))
    winner[turn] = false;
turn++;

看,即使比较结果为 false,也无需赋值。

[编辑]

耶!刚刚发现我的异或错了...这就是高尔夫的问题,花了很多时间才发现它是错的....(在这种情况下,如果 cond 为 true 但之前的值为 false,则获胜不起作用)。

所以让我以其他方式打高尔夫球:)

winner[turn] = !subField[i/10][i%10].equalsIgnoreCase("O") & winner[turn++];

注意!和&

[编辑]

感谢@Javier 给了我一个更加紧凑和困惑的版本:) 这个:

winner[turn++] &= !subField[i/10][i%10].equalsIgnoreCase("O");

关于java - Java三元运算符的自增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20125602/

相关文章:

java - Log4j:如何配置多个附加程序:一个定向到控制台和一个文件,另一个严格定向到一个文件?

java - 找不到 websphere deployment.xml 组成单元

javascript - Div值增量javascript

julia - Julia 有三元条件运算符吗?

java - 空指针异常错误调用方法

Java: block 增量和单位增量有什么区别,这些值有什么用?

c - 为什么这些构造使用前后递增的未定义行为?

javascript - 如何在映射时跳过 null? JSX

php - PHP 中的三元运算符

java - 在Android Studio中使用Volley下载文件