Java:if,else并返回

时间:2016-06-15 15:45:09

标签: java

我正在编写一个方法,其中包含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部分,即使上面的条件是假的。

2 个答案:

答案 0 :(得分:1)

如果不了解代码的其余部分exists(String name)以及hTableMap<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
}

希望这些评论可以帮助您理解流程!

考虑到这一点,你问题的答案是'是'。