-2

エラーが発生し続けます

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

3 に答える 3

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可能なすべての条件に対応する必要があります。

于 2013-03-21T00:45:45.890 に答える
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;
}
于 2013-03-21T00:53:18.410 に答える
0
if (line.charAt(0) == line.charAt(line.length()-1)){
            isPalindrome(line.substring(1, line.length()-1));
    //specify return here    
        }


Here  no return;

戻り値の型を boolean に指定したため、考えられるすべてのケースで戻り値の型を指定する必要があります。

于 2013-03-21T00:45:26.017 に答える