我在这里发布两个功能。在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
而不是子字符串操作。这将更具可读性。 a
和b
相同是String.endsWith
的特例,因此以下内容应等效:public boolean endOther(String a, String b) {
return a.endsWith(b) || b.endsWith(a);
}
关于java - 需要多个返回语句的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47621984/