关于ifs的问题

时间:2010-10-04 20:09:48

标签: java

我有以下代码:

     boolean Short = x();
    boolean Long = y();       
    boolean Longer = z();

    if (Short )
        return "abc";

    if (Long)
        return "def";

    if (Longer) 
        return "ghi";        

三个bool方法(x,y,z)都在数值上做数学。如果上面的3个ifs没有被评估为true,我需要一个额外的if语句来返回数字。怎么可能这样做,有没有多余的ifs?另外,我需要了解ifs的优先级?我的名字是“dotnet”,但我同样是Java的程序员(我花了很多时间尝试将它拿起来)。

由于

4 个答案:

答案 0 :(得分:5)

没关系,但是如果出现以下情况则不需要另一个:

boolean Short = x();
boolean Long = y();       
boolean Longer = z();

if (Short )
    return "abc";

if (Long)
    return "def";

if (Longer) 
    return "ghi"; 

return "none of the above";

if语句将按顺序进行评估,一旦其中一个语句为真,return语句将在方法中结束执行,因此不会对其后的任何内容进行评估。

如果它们都不为真,则最后return将结束执行。

如果您y()为真,则不需要评估z()x(),如果z()y()是真的:

if (x())
    return "abc";

if (y())
    return "def";

if (z()) 
    return "ghi"; 

return "none of the above";

答案 1 :(得分:1)

刚刚提出:

boolean Short = x();
boolean Long = y();       
boolean Longer = z();

if (Short )
    return "abc";

if (Long)
    return "def";

if (Longer) 
    return "ghi";

return "xyz";

答案 2 :(得分:1)

如果没有多余的话。如果三个条件中没有一个评估为return,您只需要额外的true。如果需要,您还可以添加else子句。

boolean Short = x();
boolean Long = y();       
boolean Longer = z();

if (Short )
    return "abc";
else if (Long)
    return "def";
else if (Longer) 
    return "ghi";
else
    return "something else";

或者,如果方法x()y()z()没有副作用:

if (x())
    return "abc";
else if (y())
    return "def";
else if (z()) 
    return "ghi";
else
    return "something else";

此外,您可以使用?运算符来获得更紧凑但更隐蔽的语法:

return x()? "abc" :
       y()? "def" :
       z()? "ghi" :
       "something else";

但是ifs可能比这更具可读性: - )

答案 3 :(得分:0)

嗯..可能是这个

if (x())
    return "abc";

if (y())
    return "def";

if (z()) 
    return "ghi"; 
return "smt";