缺少return语句,递归方法

时间:2013-03-21 00:43:27

标签: java recursion return

我一直收到错误

  

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

3 个答案:

答案 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在所有可能的情况下,您需要提供返回类型。