Answer
Reverse a Number — Two Methods
Java
public class ReverseNumber {
public static void main(String[] args) {
// Method 1: Using algorithm (mathematical approach)
long num = 12345; // result: 54321
long rev = 0;
while (num != 0) {
rev = rev * 10 + num % 10; // extract last digit and build reversed
num = num / 10; // remove last digit
}
System.out.println("Reverse num is: " + rev); // 54321
// Method 2: Using StringBuffer
long num1 = 12345;
System.out.println(new StringBuffer(String.valueOf(num1)).reverse()); // 54321
}
}
Output
CODE
Reverse num is: 54321
54321
Step-by-Step Trace (Algorithm)
CODE
num=12345, rev=0
Loop 1: rev = 0*10 + 12345%10 = 5, num = 12345/10 = 1234
Loop 2: rev = 5*10 + 1234%10 = 54, num = 1234/10 = 123
Loop 3: rev = 54*10 + 123%10 = 543, num = 123/10 = 12
Loop 4: rev = 543*10 + 12%10 = 5432, num = 12/10 = 1
Loop 5: rev = 5432*10 + 1%10 = 54321,num = 1/10 = 0
Loop ends → 54321
Reverse Negative Number
Java
long num = -12345;
boolean negative = num < 0;
num = Math.abs(num); // work with positive
long rev = 0;
while (num != 0) {
rev = rev * 10 + num % 10;
num /= 10;
}
if (negative) rev = -rev;
System.out.println(rev); // -54321
Check Palindrome Number Using Reverse
Java
long original = 121;
long temp = original;
long reversed = 0;
while (temp > 0) {
reversed = reversed * 10 + temp % 10;
temp /= 10;
}
System.out.println(original == reversed
? original + " is palindrome"
: original + " is not palindrome");
// → 121 is palindrome
StringBuffer vs StringBuilder for Reverse
Java
// StringBuffer (thread-safe, slightly slower)
new StringBuffer("12345").reverse().toString() // "54321"
// StringBuilder (not thread-safe, faster)
new StringBuilder("12345").reverse().toString() // "54321"
