Programming Tutorials

Converting a number into its equalant value in words in Java

By: Ganesh Iyer in Java Tutorials on 2009-06-08  

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.

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 1234

Output

 Rupees One Thousand Two Hundred and Thirty Four Only





Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in Java )

Latest Articles (in Java)