简短的IF - ELSE声明

时间:2010-12-16 14:50:05

标签: java if-statement

我试图让我的代码更具可读性,所以我决定使用一些简短的IF语句。

这是我的代码不起作用(“不是声明”):

jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);

这有什么问题?需要括号?在哪里?

6 个答案:

答案 0 :(得分:201)

“三元表达式”x ? y : z只能用于条件赋值。也就是说,您可以执行以下操作:

String mood = inProfit() ? "happy" : "sad";

因为三元表达式返回了某些内容(在此示例中为String类型)。

这并不意味着用作简短的内联if-else。特别是,如果各个部分未返回值,或返回不兼容类型的值,则无法使用它。 (所以虽然如果两种方法碰巧都返回相同的值,你可以这样做,但不应仅为了副作用而调用它。)

所以正确的方法是使用if-else块:

if (jXPanel6.isVisible()) {
    jXPanel6.setVisible(true);
}
else {
    jXPanel6.setVisible(false);
}

当然可以缩短为

jXPanel6.setVisible(jXPanel6.isVisible());

对我而言,后两种表达方式都更具可读性,因为它们更清楚地传达了您正在尝试做的事情。 (顺便说一句,你是否以错误的方式得到了你的条件?无论如何这看起来都是无操作的,而不是切换)。

请勿将低字符数可读性混淆。关键点是最容易理解的;而轻度误用语言特征是一种让读者迷惑的明确方式,或至少让他们做一次精神上的双重打击。

答案 1 :(得分:27)

jXPanel6.setVisible(jXPanel6.isVisible());

或以您的形式:

jXPanel6.setVisible(jXPanel6.isVisible()?true:false);

答案 2 :(得分:3)

三元运算符只能是赋值的右侧而不是它自己的声明。

http://www.devdaily.com/java/edu/pj/pj010018/

答案 3 :(得分:3)

正如其他人所指出的那样,某种形式

x ? y : z

是表达式,而不是(完整)语句。它是一个rvalue,需要在某个地方使用 - 比如在赋值的右侧,或者函数的参数等。

也许您可以看一下:http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

答案 4 :(得分:2)

我对派对来说有点晚了,但对于未来的读者来说。

据我所知,您只是想切换可见性状态吗?为什么不使用!运算符?

jxPanel6.setVisible(!jxPanel6.isVisible);

这不是if语句,但我更倾向于使用此方法来处理与您的示例相关的代码。

答案 5 :(得分:1)

您可以像这样简单地完成它,我是在react钩子中完成的:

 (myNumber == 12) ? "true" : "false"

如果下面的函数等于这个长度:

if (myNumber == 12) {
  "true"
} else {
  "false"
}

希望对您有帮助^ _ ^