2013-03-21 84 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; 
}