我在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语句等效于:
,它将返回falsereturn false || false || false || false || false;
如果符合任何一个条件,则为true
return false || false || false || false || true;
谢谢你们,这真的很有帮助。
答案 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
答案 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