Java:if,else和return

Java: if, else and return

我正在编写一个方法,其中包含if-else语句,还包含一个返回关键字。现在,我正在写这样的东西:

1
2
3
4
5
6
7
8
9
10
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条件为假,"else"语句总是会被删节。

现在,如果这些是错误的:

1
2
3
4
5
if(name == null || name.trim().isEmpty())
        throw new Exception("The key is empty");
    else if(exists(name)){
        hTable.remove(name);
}

其他部分不应该总是很可爱吗?

1
else throw new Exception("Animal doesn't exist");

我注意到了这一点,因为这个方法返回的是真/假,而且它似乎忽略了其他部分,即使上面的条件是假的。


我将尝试在您的代码片段中添加注释,以帮助您理解流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
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
}

希望这些评论能帮助你理解这个流程!

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


如果不知道其余代码exists(String name)hTable(Map)的类型,我需要猜测:

if exits返回true,else if语句的计算结果为true。将执行htable.remove(name)行。不会调用else分支,因为else if是。现在最后一行将是return hTable.get(name) == null;

我认为它将返回真,因为htable将返回空值。