2011-10-26 130 views
1

可以使用三元運算符來編寫if-else語句,例如,寫if else語句的方法

output = (val>val2) ? "Condition is true" : "Condition is false"; 

現在考慮

if(condition1){ 
    //do something 
}else if(condition2){ 
    //do something 
}else if(condition3){ 
    //do something 
} 

如何寫上面使用三元運算符的代碼?

+2

你寫的方式非常好 –

+6

你可以通過兩種不同的答案來看到,你確實沒有明確表達你的問題。 – EJP

回答

1

試試這個。

(a?w:(b?x:(c?y:z)))

+0

這是正確的,但可以說是不太可讀。 – Larsenal

-1
output = (condition1) ? "Condition1 is true" : ((condition2) ? 
     "Condition2 is true" : ((condition3) ? 
     "Condition3 is true" : " all Condition are false")); 
+0

他想知道如何使用? :具有多種條件的形式。 –

0

肯定。

你想寫的是一個三元運算符作爲if語句。

那麼,讓我們從邏輯上推斷出這一點。

output = (val>val2) ? "Code here when condition is true" : "Code here when condition is false"; 

我們要說的是以下

if(val > val2) 
{ 
    //code here when condition is true; 
} 
else 
{ 
    //code here when condition is false; 
} 

這就是它!

快樂編碼! ;)

1

東西擴展形式是這樣的:

X outputfn(...) 
{ 
    if(c1)  { return A; } 
    else if(c2) { return B; } 
    else  { return C; } 
} 

output = outputfn(...); 

可以翻譯成

output = (c1)?A:((c2)?B:C); 

但它相當不可讀。

所以我建議將它解壓縮到一個函數中,而不是使用函數。

+0

真的很好的例子,你給我非常感謝 –

+0

我同意,通過將這個邏輯轉移到一個函數中,從而給它一個有意義的名字,代碼將更容易理解。 – neontapir

1

我想我明白了。你會想是這樣的:

output = (val>val3)?"First Case":(val>val2)?"Second Case":"Default Case"; 

您只需把後續IFS表達的最右邊的子句。請注意,最後總會有一個默認情況。

4
output = (condition1) ? 
      "First Case" : ((condition2) ? 
      "Second Case" : ((condition3) ? 
      "Third Case") : (...)); 

但請記住,萬一條件的數量超過3,這將是一個維修的噩夢。

0

我會格式化這種方式:

int result = condition1 ? 1 
    : condition2 ? 2 
    : condition3 ? 3 
    : -1; 

但我與嵌套三元運營商可能很難理解其他海報同意。

0

爲什麼?你寫的很清楚,使用三元運算符不會改變生成的代碼。