我在这里发布两个功能。在findPrime(int m, int i, int n)
我有一个外部的if和外部其他块来自我正在返回的块,所以可以认为该函数正在返回我在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;
}
}
}
答案 0 :(得分:2)
您的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);
}