java - 这 ? boolean 禅宗运算符

标签 java boolean boolean-operations

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

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

我有以下声明:

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

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

但是当我将其输入 Eclipse 时,出现语法错误。

我做错了什么?

最佳答案

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

所以这很好:

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

但这不是:

condition ? voidMethod1() : voidMethod2();

您应该在此处使用 if 语句:

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

关于java - 这 ? boolean 禅宗运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657876/

相关文章:

ruby-on-rails - 创建帖子时如何访问参数

python-3.x - pandas 计算匹配条件的文本的方法是什么?

sql - T-SQL 中的 bool 值 'NOT' 不适用于 'bit' 数据类型?

c++ - 将 bool 数组转换为 int32、unsigned int 和 double?

java - 在 HSSFWorkbook 中设置 Activity 单元格

c - && 和 ||运营商

java - 可以用 json 中的 json 值填充当前对象吗?

java - 存储 boolean 值

java - 自动为 JWS 应用程序安装证书

java - mysql插入和更新查询中的单引号和双引号(java)