为了账号安全,请及时绑定邮箱和手机立即绑定

三元运算符Java

三元运算符Java

三元运算符Java有没有办法在三元操作中实现这一点。我对这三元知识还很陌生,也许您可以指导我。if(selection.toLowerCase().equals("produkt"))      cmdCse.setVisible(true);else      cmdCse.setVisible(false);这似乎无效。selection.toLowerCase().equals("produkt")?cmdCse.setVisible(true):cmdCse.setVisible(false);
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

在这种情况下,您甚至不需要三元运算符:

 cmdCse.setVisible(selection.toLowerCase().equals("produkt"));

或者,清洁工:

 cmdCse.setVisible(selection.equalsIgnoreCase("produkt"));

您的版本:

selection.toLowerCase().equals("produkt")? cmdCse.setVisible(true): cmdCse.setVisible(false);

在语义上是不正确的:三元运算符应表示替代的赋值,它不能完全替代if语句。还行吧:

double wow = x > y? Math.sqrt(y): x;

因为你要么分配xMath.sqrt(y)wow根据条件

我的2cents:仅在使程序更清晰时才使用三元运算符,否则最终将得到一些难以理解的单线。


查看完整回答
反对 回复 2019-09-26
?
慕容3067478

TA贡献1773条经验 获得超3个赞

三元运算符与if语句不完全一样。三元运算符必须从双方“返回”某些内容,因此将像setVisible()这样的void方法调用放在那儿是行不通的。

相反,您可以完全不用三元运算符来执行以下操作:

cmdCse.setVisible(selection.toLowerCase().equals("product"));

但是,为了说明这一点,三元等价物看起来像这样:

cmdCse.setVisible(selection.toLowerCase().equals("product") ? true : false);

请注意,现在三元运算符如何在两侧“返回”真或假,而不是简单地调用void方法。


查看完整回答
反对 回复 2019-09-26
?
四季花海

TA贡献1811条经验 获得超5个赞

直接从文档

如果使代码更易读,请使用?:运算符而不是if-then-else语句。例如,当表达式紧凑且没有副作用(例如赋值)时。

如果您cmdCse.setVisible(true / false);不返回任何内容,并且该操作还具有副作用(它会更改的状态cmdCse),因此此处不能使用条件运算符(当您使用运算符时,?:分支必须具有相同的返回类型)。

顺便说一句,请注意.. ? .. : ..应称为conditional operator


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 578 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信