00:00

Java Program to Reverse a Number

Last updated: 3 min read

Reversing a number means writing its digits in the opposite order: 12345 becomes 54321. The usual approach takes digits off the end of the number one at a time and builds the reversed number from them.

1. Reverse a Number Using a while Loop

On each step, number % 10 gives the last digit. Multiplying reversed by 10 makes room for that digit, and number / 10 removes it from the original.

numberdigitreversed
1234555
1234454
1233543
1225432
1154321
ReverseNumber.java
public class ReverseNumber {
    public static void main(String[] args) {
        int number = 12345;
        int original = number;
        int reversed = 0;

        while (number != 0) {
            int digit = number % 10;
            reversed = reversed * 10 + digit;
            number /= 10;
        }

        System.out.println("Original number: " + original);
        System.out.println("Reversed number: " + reversed);
    }
}
Output
Original number: 12345
Reversed number: 54321

2. Reverse a Number Using a for Loop and User Input

The same steps fit into a for loop with an empty initialisation part. This version reads a long, so larger numbers can be reversed.

ReverseNumberFor.java
import java.util.Scanner;

public class ReverseNumberFor {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a number: ");
        long number = scanner.nextLong();
        scanner.close();

        long reversed = 0;
        for (; number != 0; number /= 10) {
            reversed = reversed * 10 + number % 10;
        }

        System.out.println("Reversed number: " + reversed);
    }
}
Output (with sample input)
Enter a number: 987654321
Reversed number: 123456789
Note: trailing zeros disappear when a number is reversed: 1200 becomes 21, because 0021 is just 21 as a number. Reverse the digits as a string if you need to keep them.

3. Reverse a Number Using StringBuilder

Converting the number to a string lets StringBuilder.reverse() do the work. This version also checks for a palindrome: a number that reads the same forwards and backwards, such as 12321.

ReverseNumberString.java
public class ReverseNumberString {
    public static void main(String[] args) {
        int[] numbers = {12321, 4567, 1200};

        for (int number : numbers) {
            String reversed = new StringBuilder(String.valueOf(number)).reverse().toString();
            boolean palindrome = reversed.equals(String.valueOf(number));

            System.out.println(number + " reversed is " + reversed
                    + (palindrome ? " (palindrome)" : ""));
        }
    }
}
Output
12321 reversed is 12321 (palindrome)
4567 reversed is 7654
1200 reversed is 0021

4. Summary

  • Take the last digit with % 10, append it with reversed * 10 + digit, and drop it with / 10.
  • Keep a copy of the original number if you need it after the loop.
  • Reversing as a number drops trailing zeros; reversing as a string keeps them.
  • A number is a palindrome when it equals its reverse.

Related Programs