【问题标题】:Ternary operator with multiple condtions in Java throwing error [duplicate]Java中具有多个条件的三元运算符抛出错误[重复]
【发布时间】:2016-05-21 17:28:22
【问题描述】:

这是我在 Java 中的三元条件。

new_user_id.equals(userid) && new_key.equals(key) && !new_value.equals(value) ? updateValue() : System.out.println("New value already exists in DB");

我正在尝试匹配三个条件并在所有三个条件都为真时调用 updateValue() 函数。但仍然抛出错误“赋值的左侧必须是变量”。有什么想法吗?

【问题讨论】:

  • 将所有内容从“新”扔到“?”之前括号内()
  • 三元语句用于赋值。这需要更改为if 声明

标签: java ternary-operator


【解决方案1】:

JLS-15.25. Conditional Operator ? : 说(部分)

第二个或第三个操作数表达式调用 void 方法是编译时错误。

【讨论】:

  • 你能告诉我应该写什么吗?
  • 您不能使用System.out.println,也不能调用void 方法(带有三元组)。你可以使用if-else
  • 但是如果它返回true,我想调用一个函数。 if-else 可以写,但是不想用
  • 你可以调用一个函数,但它必须返回一个值(并且第二个和第三个操作数表达式的类型必须相同)。
  • 那么,函数应该返回一个布尔值,对吧?
【解决方案2】:

三元运算符用于条件变量赋值之类的:

System.out.println("You have " + items + (items == 1 ? "item." : "items."));

因此,它必须返回一些东西。请改用if 语句。

【讨论】:

    猜你喜欢
    • 2020-01-19
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 2011-06-26
    • 2014-10-19
    • 2013-01-14
    相关资源
    最近更新 更多