错误:缺少Java中的return语句

时间:2014-11-13 20:17:24

标签: java compiler-errors

尝试查看数组并希望如果name在数组中则返回true,否则返回false。

public boolean ifInArray(String name)
{
    for ( Dog breed: breeds) {
        if (breed.equals(name)) {
            return true;
        } else {
            return false;
        }
    }
}

5 个答案:

答案 0 :(得分:5)

功能必须具有返回值的所有可能性。想想如果for循环在某些条件下没有执行那么会发生什么?所以你给所有可能性的回报值

public boolean ifInArray(String name)
{
    for ( Dog breed: breeds) {
        if (breed.equals(name)) {
            return true;
        } else {
            return false;
        }
    }
    return false;
}

答案 1 :(得分:3)

您只查看数组'品种'中的第一个条目,并立即返回true / false值。您需要迭代每个元素,并且只有在找到匹配项时才返回true。否则,返回false。

public boolean ifInArray(String name)
{
    for ( Dog breed: breeds) {
        if (breed.equals(name))
            return true;
    }
    return false;
}

答案 2 :(得分:2)

删除else块并在循环结束后放置return false。如果找到一个值,它将从循环内部返回true。如果没有找到任何内容,它将在循环结束后返回false。

如果第一个品种不匹配,您当前的实施将返回false,而不是检查所有品种。

答案 3 :(得分:0)

您可以将boolean存储在变量中,只返回变量。

public boolean ifInArray(String name)
{
    Boolean result = null;
    for ( Dog breed: breeds ) {
        if (breed.equals(name)) {
            result = true;
        } else {
            result = false;
        }
    }

    return result;
}

答案 4 :(得分:0)

你的内部返回if,因此它无法直接访问该方法。必须有一个默认值,特别是因为你有内部for循环。考虑字符串为空的情况,该方法将无法返回。

按以下方式编写您的方法:

public boolean ifInArray(String name)
{
for ( Dog breed: breeds) {
    if (breed.equals(name)) {
        return true;
    } else {
        return false;
    }
}
return false;
}