?布尔禅运算符[重复]

问题描述 投票:0回答:1

我以前从未使用过

?
运算符,我正在尝试弄清楚它是如何工作的。

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

我有以下声明:

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

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

showPopup()
.

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

我做错了什么?

java boolean boolean-operations
1个回答
15
投票

您正在尝试使用 条件

? :
运算符 来决定执行哪个 statement。这不是它的意图。条件运算符不能用作语句 - 它只是选择使用哪个 expression 作为整体结果。

所以这很好:

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

但这不是:

condition ? voidMethod1() : voidMethod2();

你应该在这里使用

if
声明:

if (getSelection().equalsIgnoreCase("Måned")) {
    calendarView.currentlyViewing.set(Calendar.Year);
} else {
    showPopup();
}
© www.soinside.com 2019 - 2024. All rights reserved.