我一直收到错误
Palindrome.java:36:错误:缺少return语句} ^ 1错误
当我尝试编译时,对于实验室我必须有一个递归方法,如果输入字符串是一个忽略非字母字符的回文结构,则返回true。那么问题是什么,我该如何解决它。
package lab07;
import java.util.Scanner;
public class Palindrome{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while ( input.hasNext()){
String line = normalise(input.next());
System.out.println(isPalindrome(line));
}
}
public static String normalise(String line){
String s = "";
char[] chars = line.toCharArray();
for (int i = 0; i < chars.length; i++){
if ( Character.isLetter(chars[i]))
s += Character.toLowerCase(chars[i]);
}
return s;
}
public static boolean isPalindrome(String line){
if ( line.length() > 1 ){
if (line.charAt(0) == line.charAt(line.length()-1)){
isPalindrome(line.substring(1, line.length()-1));
}
else
return false;
}
else
return true;
}
答案 0 :(得分:3)
您错过了内部return
条件
if
语句
public static boolean isPalindrome(String line){
if ( line.length() > 1 ){
if (line.charAt(0) == line.charAt(line.length()-1)){
isPalindrome(line.substring(1, line.length()-1));
// MISSING RETURN HERE
}
else
return false;
}
else
return true;
}
每个可能的条件都需要return
。
答案 1 :(得分:1)
您需要返回递归案例的结果:
public static boolean isPalindrome(String line){
if ( line.length() > 1 ){
if (line.charAt(0) == line.charAt(line.length()-1)){
return isPalindrome(line.substring(1, line.length()-1));
}
else
return false;
}
else
return true;
}
答案 2 :(得分:0)
if (line.charAt(0) == line.charAt(line.length()-1)){
isPalindrome(line.substring(1, line.length()-1));
//specify return here
}
Here no return;
您指定了返回类型boolean.So在所有可能的情况下,您需要提供返回类型。