1

このコードのバグを見つけるのを手伝ってくれませんか。回文ではない文字列でこれをテストすると、回文であるというメッセージが表示されます。

import java.util.*;

public class Main{


    public static void main(String args[]){
        String input = "";
        System.out.println("Enter the string to verify palindrome");
        Scanner scan = new Scanner(System.in);
        input = scan.nextLine();

        Main m = new Main();
        if(m.palindrome(input))
        System.out.println(" The string " + input + " is a palindrome ");
        else System.out.println(" The string " + input + " is not a palindrome ");
    }

    private boolean palindrome(String input){
        String reverse = input;
        int j;
        for(int i=0;i<=reverse.length()-1;i++){
            for( j=reverse.length()-1;j>=0;){
                if(reverse.charAt(i)== reverse.charAt(j)){
                    return true;
                }
                else{
                    return false;
                }   

            }j--;

        }
        return false;   
    }

}
4

1 に答える 1

2
if(reverse.charAt(i)== reverse.charAt(j)){
   return true;
}

最初と最後の文字が同じ場合、他の文字をチェックせずに true を返します。

より良いアプローチは、一致しない文字が見つかるまで、または終了するまで、単語をステップ実行し続けることだと思います. 一致しない文字が見つかった場合は、false を返します。終了したら、true を返します。

于 2013-10-06T21:22:53.427 に答える