解答例 - j1.lesson12.Palindrome

package j1.lesson12;

import java.io.*;

/**
 * 課題1201 - 解答例.
 @author arakawa
 @version $Id: Palindrome_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class Palindrome {

    /**
     * コンソールから入力された文字列が回文であるかどうか調べるプログラム。
     * 以下の擬似コードで表される。
     <pre>
     * プログラム全体
     *     print &quot;文字列を入力:&quot;
     *     input = コンソール入力 (文字列)
     *     if input が回文
     *         print input &quot;は回文です&quot;
     *     else
     *         print input &quot;は回文ではありません&quot;
     </pre>
     @param args 無視される
     @throws IOException 入力中に例外が発生した場合
     */
    // プログラム全体
    public static void main(String[] argsthrows IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        // print "文字列を入力:"
        System.out.print("文字列を入力:");

        // input = コンソール入力 (文字列)
        String input = reader.readLine();

        // if input が回文
        if (isPalindrome(input)) {
            // print input "は回文です"
            System.out.println(input + "は回文です");
        }
        // else
        else {
            // print input "は回文ではありません"
            System.out.println(input + "は回文ではありません");
        }
    }

    /**
     * 指定された文字列が回文であるかどうか調べる。
     * 以下の擬似コードで表される。
     <pre>
     * 回文かどうか調べる(string)
     *     for i を 0 から floor(stringの長さ / 2) まで
     *         if stringの先頭からi文字目 と stringの末尾からi文字目 が違う
     *             false を返す
     *     true を返す
     </pre>
     @param string 調べる文字列
     @return 文字列が回文であれば <code>true</code>、そうでなければ <code>false</code>
     */
    // 回文かどうか調べる(string)
    public static boolean isPalindrome(String string) {
        int length = string.length();

        // for i を 0 から floor(stringの長さ / 2) まで
        for (int i = 0; i < length / 2; i++) {
            // if stringの先頭からi文字目 と stringの末尾からi文字目が違う
            if (string.charAt(i!= string.charAt(length - - i)) {
                // false を返す
                return false;
            }
        }
        // true を返す
        return true;
    }
}