我有以下代码:
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的程序员(我花了很多时间尝试将它拿起来)。
由于
答案 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";