写if else语句的方法

时间:2011-10-26 06:51:19

标签: c# java if-statement ternary-operator

可以使用三元运算符编写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
}

如何使用三元运算符编写上述代码?

8 个答案:

答案 0 :(得分:4)

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

但请记住,万一条件的数量超过3,这将是一场维护噩梦。

答案 1 :(得分:1)

试试这个。

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

答案 2 :(得分:1)

像这样扩展形式的东西:

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

output = outputfn(...);

可以翻译成

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

但它非常难以理解。

所以我建议将其提取到一个函数中并使用该函数。

答案 3 :(得分:1)

我想我明白了。你会想要这样的东西:

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

您只需将后续ifs放在表达式的最右边的子句中。请注意,最后总会有一个默认情况。

答案 4 :(得分:0)

不确定

你要写的是一个三元运算符作为if else语句。

好吧,让我们从逻辑上推断出这一点。

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;
}

就是这样!

快乐的编码! ;)

答案 5 :(得分:0)

我会这样格式化:

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

但我同意其他海报,嵌套三元运算符很难理解。

答案 6 :(得分:0)

为什么呢?你写的内容非常清楚,使用三元运算符不会改变生成的代码。

答案 7 :(得分:-1)

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