我正在编写一个方法,其中包含if else语句,但也包含return关键字。现在,我写了这样的话:
public boolean deleteAnimal(String name) throws Exception{
if(name == null || name.trim().isEmpty())
throw new Exception("The key is empty");
else if(exists(name)){
hTable.remove(name);
}
else throw new Exception("Animal doesn't exist");
return hTable.get(name) == null;
}
我是java的新手,这是我第一次尝试学习编程语言。我读到了'其他'如果if条件为假,则语句总是有效。
现在,如果这些都是假的:
if(name == null || name.trim().isEmpty())
throw new Exception("The key is empty");
else if(exists(name)){
hTable.remove(name);
}
其他部分是否总是优先?
else throw new Exception("Animal doesn't exist");
我注意到了这个,因为这个方法返回true / false,看起来它忽略了else部分,即使上面的条件是假的。
答案 0 :(得分:1)
如果不了解代码的其余部分exists(String name)
以及hTable
(Map<String,? extends Object>
的类型),我需要猜测:
如果exits返回true,则else if语句的计算结果为true。将执行hTable.remove(name)行。不调用else分支,因为else if
是。现在最后一行将是return hTable.get(name) == null;
我认为它会返回true,因为hTable将返回null。
答案 1 :(得分:1)
我会尝试在您的代码段中添加评论,以帮助您了解流程:
public boolean deleteAnimal(String name) throws Exception{
if(name == null || name.trim().isEmpty())
throw new Exception("The key is empty"); //Executes if 'name' is null or empty
else if(exists(name)){
hTable.remove(name); // Excecutes if 'name' is not null and not empty and the exists() returns true
}
else
throw new Exception("Animal doesn't exist"); //Excecutes if 'name' is not null and not empty and the exists() returns false
return hTable.get(name) == null; //The only instance when this is possible is when the 'else if' part was executed
}
希望这些评论可以帮助您理解流程!
考虑到这一点,你问题的答案是'是'。