2013-03-21 4 views
-2

내가 입력 문자열이 아닌 편지를 무시 회문 경우 I가 true를 돌려주는 재귀 방법이 있어야 내가 컴파일 할 때 실험실에 대한 오류누락 반환 성명, 재귀 방법

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

이 방법이 반환을 갖는, 그것은 나쁜 프로그래밍 스타일입니다. 그걸 제안 해주세요. –

+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

당신은 내부 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; 
}