java - 为什么在使用三元 if/else 运算符时增量运算符 (++/--) 不起作用?

标签 java if-statement

与下面的问题类似,但我正在扩展更具体的查询。另外,这搁置了关于是否使用 if/else 的三元或正常样式的意见。 Applying increment using ternary operator in Java

因此理论上,以下代码片段:

if (text.equals("foo"))
    data++;
else if (text.equals("bar"))
    data--;

使用三元运算符应该如下所示:

data = text.equals("foo") ? data++ : text.equals("bar") ? data-- : data;

但是,在我的 android (Java) 应用程序中,android studio 向我显示了警告:

The value changed at 'data++' is never used

同样,当我在应用程序中运行它时,数据变量保持不变。但是,当我将代码行更改为:

data = text.equals("foo") ? data + 1 : text.equals("bar") ? data - 1 : data;

成功了。

所以,这让我想知道在这种情况下是否允许使用++/-- 运算符? 有人对此有任何意见吗?

最佳答案

后递增 (data++) 和后递减 (data--) 运算符返回变量在递增/递减之前的值,因此对其进行赋值返回变量取消增量/减量。

您可以使用预自增和预自减(或像您一样使用data + 1data - 1):

data = text.equals("foo") ? ++data : text.equals("bar") ? --data : data;

关于java - 为什么在使用三元 if/else 运算符时增量运算符 (++/--) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52982014/

相关文章:

python - 长 elif 链与带有 exec() 的字典

java - 为什么当我通过 writeObject 方法发送对象时它没有改变?

java - ASCII 中的六个不同的 '?' 字符?

linux - 需要用一个变量比较两个字符串

ms-access - 如何为 MS Access 编写 "IF"语句?

带有 IF 条件的 MySQL JOIN

java - 在带有 for 循环的 if 语句中使用数组时找不到符号

java - Mockito 抛出 java.lang.NoClassDefFoundError 和 java.lang.VerifyError

Java 创建一个方法来读取和打乱现有数组的元素

java - 实现平均滤波器在 OpenCV 中不起作用,但在 Java 中起作用