2013-03-21 4 views
-2

я получаю ошибкуотсутствующее возвратное Заявление, Рекурсивный метод

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

, когда я пытаюсь скомпилировать, для лаборатории я должен иметь рекурсивный метод, который возвращает истину, если входная строка является палиндромом игнорирования нон письма персонажи. Так в чем проблема и как я могу ее исправить.

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

ответ

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

Вы упускаете 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

Вы должны возвращать результат рекурсивного случая:

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