【问题标题】:The ? boolean zen operator [duplicate]这 ?布尔禅运算符[重复]
【发布时间】:2013-03-27 11:36:58
【问题描述】:

我以前从未使用过? 运算符,我正在尝试弄清楚它是如何工作的。

我已经阅读了无数页,并决定为自己尝试。

我有如下声明:

 getSelection().equalsIgnoreCase("Måned") ? calendarView.currentlyViewing.set(Calendar.Year) : showPopup();

据我所知,如果左侧(布尔值)为真,它将设置我的 calendarView.to 年份,如果不是(getSelection 不等于 måned),它将调用方法 showPopup();

但是当我在 eclipse 中输入这个时,我得到一个语法错误。

谁能解释我做错了什么?

【问题讨论】:

  • 建议的用法是这样的:$name = isGirl()? 'Lauren' : 'Bob'
  • 很难判断没有错误消息,但我猜这两种方法都有void返回类型。 ?: 不是这样工作的,? 的 RHS 上的两个语句都应该评估为非空值。

标签: java boolean boolean-operations


【解决方案1】:

您正在尝试使用conditional ? : operator 来决定要执行哪个语句。这不是它的意图。条件运算符不能用作语句 - 它只是选择使用哪个 表达式 作为整体结果。

所以这很好:

foo(condition ? nonVoidMethod1() : nonVoidMethod2());

但这不是:

condition ? voidMethod1() : voidMethod2();

你应该在这里使用if 声明:

if (getSelection().equalsIgnoreCase("Måned")) {
    calendarView.currentlyViewing.set(Calendar.Year);
} else {
    showPopup();
}

【讨论】:

  • 谢谢你,我现在明白了:P 所以左边是一个条件,然后右边决定变量需要是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2010-09-23
相关资源
最近更新 更多