</>

Technology

Java Programs

Difficulty

Beginner

Interview Question

Write a Java program to check if a number is a palindrome (e.g., 121, 171).

Answer

Check if a Number is Palindrome

Java
public class Palindrome {
    public static void main(String[] args) {
        int lastDigit, sum = 0, a;
        int inputNumber = 171;

        a = inputNumber;

        // Code to reverse a number
        while (a > 0) {
            System.out.println("Input Number " + a);

            lastDigit = a % 10;               // extract last digit
            System.out.println("Last Digit " + lastDigit);

            System.out.println("Digit " + lastDigit +
                " was added to sum " + (sum * 10));

            sum = (sum * 10) + lastDigit;     // build reversed number
            a   = a / 10;                     // remove last digit
        }

        // If reversed number equals original → palindrome
        if (sum == inputNumber)
            System.out.println("Number is palindrome");
        else
            System.out.println("Number is not palindrome");
    }
}

Output (for 171)

CODE
Input Number 171
Last Digit 1
Digit 1 was added to sum 0
Input Number 17
Last Digit 7
Digit 7 was added to sum 10
Input Number 1
Last Digit 1
Digit 1 was added to sum 170
Number is palindrome

Clean Version

Java
public class NumberPalindromeClean {
    public static void main(String[] args) {
        int inputNumber = 121;
        int original    = inputNumber;
        int reversed    = 0;

        while (inputNumber > 0) {
            int lastDigit = inputNumber % 10;
            reversed      = (reversed * 10) + lastDigit;
            inputNumber   = inputNumber / 10;
        }

        if (reversed == original)
            System.out.println(original + " is a Palindrome number");
        else
            System.out.println(original + " is NOT a Palindrome number");
    }
}

Test Multiple Numbers

Java
int[] numbers = { 121, 131, 171, 123, 1001, 1221 };

for (int num : numbers) {
    int reversed = 0, temp = num;
    while (temp > 0) {
        reversed = reversed * 10 + temp % 10;
        temp /= 10;
    }
    System.out.println(num + " → " + (reversed == num ? "Palindrome" : "Not Palindrome"));
}

Output

CODE
121 → Palindrome
131 → Palindrome
171 → Palindrome
123 → Not Palindrome
1001 → Not Palindrome
1221 → Palindrome

Number vs String Palindrome

Number PalindromeString Palindrome
Inputint num = 121String s = "madam"
MethodReverse digits with % 10Reverse with StringBuilder.reverse()
Comparereversed == originalrev.equals(s)

Follow AutomateQA