Program to reverse a number using for, while and recursion

Program 1: Reverse a number using while Loop

In this program, we are taking the input number from the user using Scanner class and then we are reversing the number using while loop.

The logic we are using here is: Inside the while loop we are dividing the given number by 10 using % operator and then storing the remainder in the reversenum variable after multiplying the reversenum by 10. we are repeating this step again and again until the given number become zero.

import java.util.Scanner;
class ReverseNumberWhile
{
   public static void main(String args[])
   {
      int num=0;
      int reversenum =0;
      System.out.println("Input your number and press enter: ");
      //This statement will capture the user input
      Scanner in = new Scanner(System.in);
      //Captured input would be stored in number num
      num = in.nextInt();
      //While Loop: Logic to find out the reverse number
      while( num != 0 )
      {
          reversenum = reversenum * 10;
          reversenum = reversenum + num%10;
          num = num/10;
      }

      System.out.println("Reverse of input number is: "+reversenum);
   }
}

Output:

Input your number and press enter: 
145689
Reverse of input number is: 986541

Program 2: Reverse a number using for Loop

This program is fairly similar to the first program, here we are using for loop instead of while loop.

As you can see, in this program we have not used the initialization and increment/decrement section of for loop because we have already initialized the variables outside the loop and we are decreasing the value of num inside for loop by diving it by 10.

The logic is same as first program.

import java.util.Scanner;
class ForLoopReverseDemo
{
   public static void main(String args[])
   {
      int num=0;
      int reversenum =0;
      System.out.println("Input your number and press enter: ");
      //This statement will capture the user input
      Scanner in = new Scanner(System.in);
      //Captured input would be stored in number num
      num = in.nextInt();
      /* for loop: No initialization part as num is already
       * initialized and no increment/decrement part as logic
       * num = num/10 already decrements the value of num
       */
      for( ;num != 0; )
      {
          reversenum = reversenum * 10;
          reversenum = reversenum + num%10;
          num = num/10;
      }

      System.out.println("Reverse of specified number is: "+reversenum);
   }
}

Output:

Input your number and press enter: 
56789111
Reverse of specified number is: 11198765

Program 3: Reverse a number using recursion

Here we are using recursion to reverse the number. We have defined a method reverseMethod() and we are passing the input number to this method.

This method then divides the number by 10, displays the remainder and then calls itself by passing the quotient as parameter. This process goes on and on until the number is in single digit and then it displays the last digit (which is the first digit of the number) and ends the recursion.

import java.util.Scanner;
class RecursionReverseDemo
{
   //A method for reverse
   public static void reverseMethod(int number) {
       if (number < 10) {
	   System.out.println(number);
	   return;
       }
       else {
           System.out.print(number % 10);
           //Method is calling itself: recursion
           reverseMethod(number/10);
       }
   }
   public static void main(String args[])
   {
	int num=0;
	System.out.println("Input your number and press enter: ");
	Scanner in = new Scanner(System.in);
	num = in.nextInt();
	System.out.print("Reverse of the input number is:");
	reverseMethod(num);
	System.out.println();
   }
}

Output:

Input your number and press enter: 
5678901
Reverse of the input number is:1098765

Example: Reverse an already initialized number
In all the above programs we are prompting user for the input number, however if do not want the user interaction part and want to reverse an initialized number then this is how you can do it.

class ReverseNumberDemo
{
   public static void main(String args[])
   {
      int num=123456789;
      int reversenum =0;
      while( num != 0 )
      {
          reversenum = reversenum * 10;
          reversenum = reversenum + num%10;
          num = num/10;
      }

      System.out.println("Reverse of specified number is: "+reversenum);
   }
}

Output:

Reverse of specified number is: 987654321

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *