if语句在Java中是多余的

时间:2016-01-21 20:07:38

标签: java if-statement return conditional-statements

我在NetBeans上获得了一个灯泡,上面写着“if语句是多余的”

我想知道这两者是如何彼此相等的

public boolean isVowel(char in)
{
    char temp = Character.toLowerCase(in);

    if (temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u')
    {
        return true;
    }
    else
    {
        return false;
    }
}

public boolean isVowel(char in)
{
    char temp = Character.toLowerCase(in);

    return temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u';
}

我可以看到如果其中一个元音与temp匹配,它将如何返回true。但是,我没有看到它会如何返回虚假。如果没有满足任何条件,它会简单地返回false吗?

解决了:我正在以错误的方式看问题。要使其返回false,每个条件语句都必须为false。理想情况下,如果return语句等效于:

,它将返回false
return false || false || false || false || false;

如果符合任何一个条件,则为true

return false || false || false || false || true;

谢谢你们,这真的很有帮助。

4 个答案:

答案 0 :(得分:3)

这两个陈述是相同的。

int x = #; //user input
if (x==1) {  //any condition resulting in a true or false
    return true;
} else {
     return false;
}

return (x==1); //same thing, returning true if true, false if false;

答案 1 :(得分:0)

这个表达式:

(temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u') 

计算布尔值。 if语句测试此值。因此,不要在if / else子句中的布尔值中测试此表达式,而是可以返回它。

编辑你可以证明你的字符是否是一个元音? 这样做:

public boolean isVowel(char in) {

    return "aeiou".indexOf(Character.toLowerCase(in)) < 0;
    }

答案 2 :(得分:0)

两者确实完全相同(if陈述是多余的),这就是原因。

==是一个相等运算符,这意味着,如果左侧与右侧匹配,则计算结果为true,否则计算结果为false||是一个条件运算符,这意味着,如果左侧的等式求值为false,它将检查右侧是否评估为true(或者,如果左侧评估为true,则表达式将评估为true,称为short-circuiting)。如果所有评估为false,则整个表达式将评估为false

因此,您拥有的if语句基本上变为:

if(<expression>==true) { //in the case that the conditional evaluates to true
    return true;
}
else { //in the case the conditional evaluates to false
    return false;
}

所以,这可以简化为表达式,因为它无论如何都会评估为boolean

return <expression> //will be true if true, false if false

There's more on this in the Oracle documentation

答案 3 :(得分:0)

boolean isNumeric(char cc){ //开始//测试cc是否为数字 返回( (cc =='0') | (cc =='1') | (cc =='2') | (cc =='3') | (cc =='4') | (cc =='5') | (cc =='6') | (cc =='7') | (cc =='8') | (cc =='9')); } // isNumeric