Java Program to Reverse a Number
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.
| number | digit | reversed |
|---|---|---|
| 12345 | 5 | 5 |
| 1234 | 4 | 54 |
| 123 | 3 | 543 |
| 12 | 2 | 5432 |
| 1 | 1 | 54321 |
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.
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.
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 withreversed * 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
Was this tutorial helpful?