Question:

Write a program to input a natural number less than 1000 and display it in words. [Note we have solved the program for numbers in the range [1-9999]

Test your program for the given sample data and some random data.

Sample Data:

Input: 29
Output: TWENTY NINE

Input: 17001
Output: OUT OF RANGE

Input: 119
Output: ONE HUNDRED AND NINETEEN

Input: 500
Output: FIVE HUNDRED

Programming Code:

/**
* The class Num2Word_ISC2011 accepts a number in the range [1-9999] and prints it in words.
* @author : www.javaforschool.com
* @Program Type : BlueJ Program - Java
*/

import java.io.*;
class Num2Word_ISC2011
{
    public static void main(String args[]) throws IOException
       {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        String ty[]={"","","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"};

        String ten[]={"","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen",
                      "Eighteen","Nineteen"};

        String unit[]={"","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};

        System.out.print("Enter a Number : ");
        int n=Integer.parseInt(br.readLine());
        
        /*checking whether the number is in the range [1-9999] or not*/
        if(n<1 || n>9999)
            System.out.println("Out of Range");

        else
        {
        int th=n/1000; //finding the digit at thousand's place
        int h=(n/100)%10; //finding the digit at hundred's place
        int t=(n/10)%10; //finding the digit at ten's place
        int u=n%10; //finding the digit at unit's place

        System.out.print("Output = ");

        /*Condition for printing digit at thousand's place, is that it should not be zero*/
        if(th!=0)
        System.out.print(unit[th]+" Thousand");

        /*Condition for printing digit at hundred's place, is that it should not be zero*/
        if(h!=0)
        System.out.print(" "+unit[h]+" Hundred");

        /*Condition for printing the word "And"*/
        if((t!=0 || u!=0)&&(th!=0 || h!=0))
        System.out.print(" And");

        /*Condition for printing digit at ten's place*/
        if(t==1) //When digit at ten's place is 1, we have different words like Ten, Eleven etc.
        System.out.print(" "+ten[u+1]);

        else //if it is not 1 then we print the words following a normal pattern
        System.out.print(" "+ty[t]+" "+unit[u]);
        }
    }
}

Output:

1. Enter a Number : 129
Output = One Hundred And Twenty Nine

2. Enter a Number : 8307
Output = Eight Thousand Three Hundred And Seven

3. Enter a Number : 54987
Out of Range