2つのintを比較しようとすると

jinx520:

これが私の最初の時間は、質問をされ、私が最初に既存のスレッドを検索しようとしています。私のプログラムは、5桁の数字を入力するようユーザーに依頼するものとすると、それは数を逆転して、逆に元の数を比較することにより、回文であるかどうかをチェックします。私はまた、いくつかの検証では、それは5桁より長いか短い場合は数が拒絶するように、手順置きます。それは、元の番号と逆の数を比較部に到達するまで、すべてが動作するようです。ここに私のコードは次のとおりです。

import java.util.Scanner;

public class Palindromes {
    public static void main(String args[]) {
        int n, reverse = 0;
        System.out.println("Enter a 5-digit integer to see if it is a palindrome.");
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        int length = String.valueOf(n).length();
        while (length > 5 || length < 5) {
            System.out.println("Error: integer must be 5 digits in length.");
            System.out.println("Enter a 5-digit integer.");
            n = in.nextInt();
            length = String.valueOf(n).length();
        }
        while (length == 5 && n != 0) {
            reverse = reverse * 10;
            reverse = reverse + n % 10;
            n = n / 10;
        }
        System.out.println("Reversed number is: " + reverse);
        if (n == reverse) {
            System.out.println("Congratulations! Your number is a palindrome!");
        } else {
            System.out.println("Sorry.  Your number isn't a palindrome.");
        }
    }
}
スイーパー:

あなたはここで何をしているかを見てください!

while (length == 5 && n != 0) {
    reverse = reverse * 10;
    reverse = reverse + n % 10;
    n = n / 10; // <----- You are changing "n"!
}

これはループの後、ということnはもはや同じになりn、ユーザが入力しました。

この問題を解決するには、コピーしn、別の変数にし、代わりにそれを修正します。

int temp = n;
while (length == 5 && temp != 0) {
    reverse = reverse * 10;
    reverse = reverse + temp % 10;
    temp = temp / 10;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=183864&siteId=1