0

私は大学のコースを受講している意欲的な Java ユーザーですが、問題に遭遇しました。私の教授。回文に基づく 5 桁の数字を検出する Java プログラムを作成するように言われました。何かを書きましたが、計画どおりに動作しません。助けてもらえますか?netbeans IDE を使用します。

package palindrome;

import javax.swing.JOptionPane;

public class Palindrome {

    public static void main(String[] args) {

        String stringNumber;
        int number;
        String stringPal;
        int palindrome;

        stringNumber = JOptionPane
                .showInputDialog("Please, if you will, enter a five digit palindrome: ");
        number = Integer.parseInt(stringNumber);

        if (number < 10000 && number > 99999) {
            System.out
                    .println("Your number is invalid, please enter a FIVE digit number: ");
        } else if (number % 10 == number % 100) {
            System.out.println("your number: " + number + "is a palindrome");
        } else {
            System.out.println("You FAIL loser");
        }
    }
}
4

3 に答える 3

11

回文の論理が正しくありません。10 で割った余りが 100 で割った余りと等しいかどうかを確認します。これは、10 の桁に 0 がある場合にのみ当てはまります。それは回文の定義ではありません。

于 2013-03-01T22:46:16.887 に答える
0

number % 10 == number % 100 がどのように回文を意味するのかわかりませんが、最後の 2 桁の値を最後の 1 桁の値と比較するだけです。

私のアドバイスは、入力をstringorchar配列として受け取り、文字列の最後の要素を最初の要素と比較し、中央に到達するまで続行することです

ここにいくつかの疑似コードがあります:

isPalindrome = true;

for i=0 to stringLength

    if(input[i] != input[length - i - 1])
        isPalindrome = false;
于 2013-03-01T22:50:25.820 に答える
0

すでに指摘したように、回文の論理は間違っています。

確認する必要があるのは、逆にしたときに文字列/番号が同じかどうかです。

したがって、文字列が回文であるかどうかを確認したい場合、それを逆にして、元の文字列と同じかどうかを確認します。

このテンプレートを完成させるようにしてください。

boolean isPalindrome(String s){

   String reverseString = reverseString(s);

   if(reverseString.equals(s)){
        return true;
   }

   return false;
}

String reverse(String s){
  //add code to reverse String. (and optionally check if it is Integer, if it is a requirement)
}

文字列を逆にする方法をグーグルで検索できるようになりました。

StringBuilderPS:クラスを見てみたいかもしれません。

于 2013-03-01T23:19:23.637 に答える