我在这里发布两个功能。在findPrime(int m, int i, int n)中,我正在返回的两个块中都有一个外部if和外部else块,因此可以认为该函数返回的是我在endOther(String a, String b)中放入相同结构的东西,即
根据函数的返回类型,有两个主要的if-else块都返回值,因此我们可以说函数正在返回某些内容,但endOther(String a, String b)
函数抛出编译时错误,表示在第一个函数未抛出此类错误时放置return语句。我不了解此问题,请帮助我。在eclipse中键入两个功能并检查

1。

static boolean findPrime(int m, int i, int n){
    if(n == 0 || n == 1)
        return false;
    else {
        if(i <= m) {
            if(n%i == 0)
                //if(m%i == 0)
                return false;
            else {
                i++;
                //return findPrime(m,i);
                return findPrime(m,i,n);
            }

        }
        else {
            return true;
        }
    }
}




2。

public boolean endOther(String a, String b) {
    if(a.length()==b.length()) {
        if(a.equals(b))
            return true;
        else
            return false;
    }
    else {
        if(a.length()>b.length()) {
            if(a.substring(a.length()-b.length(),b.length()).equals(b))
                return true;
        }
        else {
            if(b.substring(b.length()-a.length(),a.length()).equals(a))
                return true;
            else
                return false;
        }
    }
}

最佳答案

您的endOther函数必须在所有可能的执行路径上返回一个值。在a.length() > b.length()的情况下,可能不会根据内部if的条件执行返回。

public boolean endOther(String a, String b) {
    if(a.length()==b.length()) {
        if(a.equals(b))
            return true;
        else
            return false;
    }
    else {
        if(a.length()>b.length()) {
            // IF THIS FAILS THERE IS NO RETURN!
            if(a.substring(a.length()-b.length(),b.length()).equals(b))
                return true;
        }
        else {
            if(b.substring(b.length()-a.length(),a.length()).equals(a))
                return true;
            else
                return false;
        }
    }
}


一般而言,您可以使用String中的某些方法来改进代码,例如String.endsWith而不是子字符串操作。这将更具可读性。 ab相同是String.endsWith的特例,因此以下内容应等效:

public boolean endOther(String a, String b) {
    return a.endsWith(b) || b.endsWith(a);
}

关于java - 需要多个返回语句的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47621984/

10-11 22:27
查看更多