Попытка сравнить два целых - PullRequest
0 голосов
/ 10 февраля 2019

Я впервые задаю вопрос, и я попытался сначала найти существующие темы.Моя программа предназначена для того, чтобы попросить пользователя ввести 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.");
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Посмотрите на то, что вы здесь делаете!

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;
}
0 голосов
/ 10 февраля 2019

проще преобразовать число в массив и обратить его вместо вычисления:

let reverseNumber = parseInt(12345.toString().split("").reverse().join());
...