java - 是否可以将这两行写为三元运算符?

标签 java if-statement ternary-operator

示例:

if (i < n) 
    i++;
else 
   j += 2;

我做到了:

i += i < n ? 1 : j += 2; 

(但编译器显示错误)

如果可能的话,我如何将这些行写为三元运算符.. 谢谢...

最佳答案

(这是“条件”运算符。它是一个三元运算符,目前 Java 只有一个,但是...)

因为您并不总是更改 i 的值,并且 Java 不允许任意表达式作为独立语句(就像其他一些语言,例如 JavaScript 一样),您不能使用条件运算符重写这些表达式,除非您给自己一个 nop方法或其他东西,以便您可以在表达式上下文中使用条件。或者做一些非常复杂的事情。

也没有理由这样做。 if很清楚。

但是如果你愿意的话,给出:

private static void nop(int n) {
}

然后

nop(i < n ? (i = i + 1) : (j = j + 2));

还有一种非常复杂的方法:

i = i < n ? i + 1 : (j = j + 2) == j ? i : 0;

...它只是分配 i返回自身如果 i < n是假的,因为我们知道 (j = j + 2) == j将是true .

但再次强调:没有理由这样做。

关于java - 是否可以将这两行写为三元运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48251453/

相关文章:

java - 更改文件中变量的值

powershell 包含不工作

c++ - 什么更快 : noop function call or if statement?

c - 在三元条件中使用 Printf() 和 return 之间的区别 (? :) operator

python 三元运算符行为

php - 我可以在 PHP 类方法返回语句中使用三元组吗?

java - Map<String,List<String>> 到 Pair<String,String>

Java-8:Stream 如何将 Map<K, List<D>> 转换为 Map<D, List<K>>

java - && boolean 运算符的评估

r - if else 语句使用 R 中多列中的日期和匹配值来过滤行