Java 缺少返回语句、递归方法

Java 缺少返回语句、递归方法,java,recursion,return,Java,Recursion,Return,我一直在犯错误 java:36:错误:缺少返回语句}^1错误 当我尝试编译时,对于实验室,我必须有一个递归方法,如果输入字符串是回文,则返回true,忽略非字母字符。那么问题是什么,我该如何着手解决它呢 package lab07; import java.util.Scanner; public class Palindrome{ public static void main(String[] args){ Scanner input = new Scanner(Sys

我一直在犯错误

java:36:错误:缺少返回语句}^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;
   }
lab07包装;
导入java.util.Scanner;
公共类回文{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
while(input.hasNext()){
字符串行=标准化(input.next());
System.out.println(isAlindrome(行));
}
}
公共静态字符串规范化(字符串行){
字符串s=“”;
char[]chars=line.toCharArray();
for(int i=0;i1){
if(line.charAt(0)=line.charAt(line.length()-1)){
isAlindrome(line.substring(1,line.length()-1));
}
其他的
返回false;
}
其他的
返回true;
}

您指定了返回类型布尔值。因此,在所有可能的情况下,您都需要提供返回类型。

您缺少内部
if
条件中的
return
语句

   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;
   }

对于每个可能的情况,都需要返回一个
返回值。

您需要返回递归情况的结果:

 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;
}

一个方法中有两个返回,这是一种糟糕的编程风格。请避免这种情况。第36行是哪一行?
 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;
}