2013-03-21 61 views
-2

我不断收到错误缺少return语句,递归方法

Palindrome.java:36: error: missing return statement } ^1 error

当我尝试编译,为实验室我必须返回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

有一个方法二的回报,这是一个不好的编程风格。请提出这个建议。 – 2013-04-06 08:51:02

+0

哪一行是第36行? – Raedwald 2015-01-02 23:30:18

回答

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

3

你错过了内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声明有需要为每一个可能条件的return

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