一线状态检查中的三个状态? (关于Java语法)

时间:2012-07-31 09:52:19

标签: java if-statement

代码片段

if (addMore) {
    y = x + moreValue;
} else {
    y = x;
}

可以压缩成:

y = (addMore ? x + moreValue : x);

大多数具有Java经验的程序员都熟悉。 但我想知道是否可以将两个以上的州压缩成一行,例如:

if (addMore) {
    y = x + moreValue;
} else if (50 < x) {
    y = 50;
} else {
    y = x;
}

如何(如果可能的话)将其压缩成一个语句,如:

y = (addMore ? x + moreValue {SOMETHING IN HERE} : x);

5 个答案:

答案 0 :(得分:2)

condition1 ? (condition1-2 ? action 1-2: action-not-1-2) : action-not-1

答案 1 :(得分:1)

y = (addMore ? x + moreValue : (50 < x ? 50 : x));

但正如评论中所说,这比if..else语句的可读性差得多,所以我认为应该避免这种说法。

答案 2 :(得分:1)

1。一句臭名昭着的谚语.....“任何傻瓜都可以编写计算机可以理解的代码,但只有优秀的程序员才能编写人类可以理解的代码.... /强>“

2。更多关于readabilityunderstandability

但这仍然是你的答案......

(addMore ? x + moreValue : (50 < x ? 50 : x)) //将此内容分配给y

答案 3 :(得分:1)

我使用这样的结构,它让人联想到Clojure的cond

y = 
  addMore ? x + moreValue :
  50 < x  ? 50            :
            x;

我发现没有可读性的问题,恰恰相反。我喜欢我可以确定整个构造是关于为y赋值。对于经典的if-else if组合来说,这一点并不明显。

答案 4 :(得分:1)

Using Ternary operator, more than one condition can check.
if First condition is true then compare with second value.

y = (addMore ? x + moreValue : (50 < x ? 50 : x));