三值运算符Java
有没有办法在三元运算中实现这一点。我对这三元的东西还不熟悉,也许你可以指导我三值运算符Java,java,ternary-operator,ternary,Java,Ternary Operator,Ternary,有没有办法在三元运算中实现这一点。我对这三元的东西还不熟悉,也许你可以指导我 if(selection.toLowerCase().equals("produkt")) cmdCse.setVisible(true); else cmdCse.setVisible(false); 这个似乎不起作用 selection.toLowerCase().equals("produkt")?cmdCse.setVisible(true):cmdCse.setVisible(false
if(selection.toLowerCase().equals("produkt"))
cmdCse.setVisible(true);
else
cmdCse.setVisible(false);
这个似乎不起作用
selection.toLowerCase().equals("produkt")?cmdCse.setVisible(true):cmdCse.setVisible(false);
在这种情况下,您甚至不需要三元运算符:
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;
因为您正在根据条件将x
或Math.sqrt(y)
分配给wow
我的要点:只有当三元运算符使您的程序更清晰时,才使用它,否则您将最终得到一些无法理解的一行程序。也许吧
cmdCse.setVisible(selection.toLowerCase().equals("produkt"));
我想这对你有用
cmdCse.setVisible(selection.toLowerCase().equals("produkt"));
三元运算符与if语句并不完全相同。三元运算符必须从两侧“返回”某些内容,因此将诸如setVisible()之类的void方法调用放在那里是行不通的 相反,您可以在根本不使用三元运算符的情况下执行类似操作:
cmdCse.setVisible(selection.toLowerCase().equals("product"));
但为了证明这一点,三元等价物看起来是这样的:
cmdCse.setVisible(selection.toLowerCase().equals("product") ? true : false);
请注意,现在三元运算符如何在两侧“返回”true或false,而不是直接调用void方法。
如果使代码更具可读性,请使用?:运算符而不是if-then-else语句;例如,当表达式紧凑且没有副作用(例如赋值)时
在您的情况下,cmdCse.setVisible(真/假)
不返回任何内容,而且该操作还有副作用(它会更改cmdCse
的状态),因此这里不能使用条件运算符(如果使用该运算符,则?
和:
分支必须具有相同的返回类型)
另请注意,
代码>应被称为以下是我的提示,如果需要将内容设置为布尔值,则只需使用setBoolean(条件),否则,如果需要将变量设置为非布尔值,则使用var=condition?result1:result2(如果条件为false,则不想更改变量本身),否则,使用if-else。selection.toLowerCase().equals(“produkt”)
的计算结果为true
或false
,这与传递给setVisible()
的值非常相似。为什么?它可读性较差,有时构建起来也不明显(比如……在这里和为您构建)。在没有优势的情况下,没有必要强制使用它(除非你选择代码高尔夫,但这对你的风格没有太大好处)。