Converting a number into its equalant value in words in Java

By: Ganesh Iyer Viewed: 190 times  Printer Friendly Format    


In this tutorial, i will explain how a number can be converted to its value as a word using Java. If you are wondering how and where this can be used, take the example of Money values. If the Amount is in numbers and you would like to convert the amount in words then this program will be useful for you.

/* Author         - Ganesh Iyer
  Program        - Displaying the input number into words
  Written on     - 06-06-2009 */


class constNumtoLetter
  {
      String[] unitdo ={"", " One", " Two", " Three", " Four", " Five",
         " Six", " Seven", " Eight", " Nine", " Ten", " Eleven", " Twelve",
         " Thirteen", " Fourteen", " Fifteen",  " Sixteen", " Seventeen", 
         " Eighteen", " Nineteen"};
      String[] tens =  {"", "Ten", " Twenty", " Thirty", " Forty", " Fifty",
         " Sixty", " Seventy", " Eighty"," Ninety"};
      String[] digit = {"", " Hundred", " Thousand", " Lakh", " Crore"};
     int r;


      //Count the number of digits in the input number
      int numberCount(int num)
      {
          int cnt=0;

          while (num>0)
          {
            r = num%10;
            cnt++;
            num = num / 10;
          }

            return cnt;
      }


      //Function for Conversion of two digit

      String twonum(int numq)
      {
           int numr, nq;
           String ltr=\"";

           nq = numq / 10;
           numr = numq % 10;

           if (numq>19)
             {
           ltr=ltr+tens[nq]+unitdo[numr];
             }
           else
             {
           ltr = ltr+unitdo[numq];
             }

           return ltr;
      }

      //Function for Conversion of three digit

      String threenum(int numq)
      {
             int numr, nq;
             String ltr = "";

             nq = numq / 100;
             numr = numq % 100;

             if (numr == 0)
              {
              ltr = ltr + unitdo[nq]+digit[1];
               }
             else
              {
              ltr = ltr +unitdo[nq]+digit[1]+" and"+twonum(numr);
              }
             return ltr;

      }

}

 class originalNumToLetter

   {

      public static void main(String[] args) throws Exception
      {

          //Defining variables q is quotient, r is remainder

          int len, q=0, r=0;
          String ltr = " ";
          String Str = "Rupees";
          constNumtoLetter n = new constNumtoLetter();
          int num = Integer.parseInt(args[0]);

          if (num <= 0) System.out.println(\"Zero or Negative number not for conversion");

          while (num>0)
          {

             len = n.numberCount(num);

             //Take the length of the number and do letter conversion

             switch (len)

             {
                  case 8:
                          q=num/10000000;
                          r=num%10000000;
                          ltr = n.twonum(q);
                          Str = Str+ltr+n.digit[4];
                          num = r;
                          break;

                  case 7:
                  case 6:
                          q=num/100000;
                          r=num%100000;
                          ltr = n.twonum(q);
                          Str = Str+ltr+n.digit[3];
                          num = r;
                          break;

                  case 5:
                  case 4:

                           q=num/1000;
                           r=num%1000;
                           ltr = n.twonum(q);
                           Str= Str+ltr+n.digit[2];
                           num = r;
                           break;

                  case 3:


                            if (len == 3)
                                r = num;
                            ltr = n.threenum(r);
                            Str = Str + ltr;
                            num = 0;
                            break;

                  case 2:

                           ltr = n.twonum(num);
                           Str = Str + ltr;
                           num=0;
                           break;

                  case 1:
                           Str = Str + n.unitdo[num];
                           num=0;
                           break;
                  default:

                          num=0;
                          System.out.println(\"Exceeding Crore....No conversion");
                          System.exit(1);


              }
                          if (num==0)
                          System.out.println(Str+\" Only");
            }

         }

      }

      To Execute

                 java originalNumToLetter <INPUT>

             Ex -   java originalNumToLetter 1234

      Output


      Rupees One Thousand Two Hundred and Thirty Four Only



Most Viewed Articles (in Java )

Latest Articles (in Java)

Comment on this tutorial

Subscribe to Tutorials

Related Tutorials

Archived Comments

1. Thanks and easy to understand.....impressive logic
View Tutorial          By: Dj at 2009-11-26 13:33:34

2. Thanks alot.. it helped me a lot...
View Tutorial          By: Sushmitha Rao at 2010-06-02 02:39:51

3. really helpul........
pls mail me some more

View Tutorial          By: shivani at 2010-07-17 01:47:30

4. //Convert numbers to word as per Indian number sys
View Tutorial          By: Abhishek at 2011-09-05 10:42:20

5. Thanks a ton Ganesh...
View Tutorial          By: Anonymous at 2012-01-25 11:20:40

6. What is the \ in several of the string building st
View Tutorial          By: rogerb at 2012-01-28 23:07:31

7. thank for the code...
how to print same out

View Tutorial          By: Ajay at 2012-04-01 17:29:15

8. Thanks a lot for valuable program.


View Tutorial          By: Kailash at 2012-07-30 10:09:12

9. really helpul........
pls mail me some more

View Tutorial          By: senthil at 2013-08-19 17:53:02

10. input 325
output :three two five

View Tutorial          By: jyothi at 2015-12-16 09:17:30

11. I need simple logic
View Tutorial          By: AshLii MaHii at 2016-06-18 02:10:16

12. excelent logic.
View Tutorial          By: naresh boorla at 2016-09-27 04:40:42

13. do you have a program that can accept floating num
View Tutorial          By: jhay at 2016-10-21 10:23:38

14. L'occasion d'installer une caméra cac
View Tutorial          By: camera caché at 2017-09-21 11:14:40