Showing posts with label Number to word convertor. Show all posts
Showing posts with label Number to word convertor. Show all posts

Sunday, February 24, 2008

How to convert number to words

During my oracle interview i was asked to write a program which converts a number to its word representation. I am sharing a simple code that does that:
/**
* This class converts a number to its word representation
* @author Gopal Patel
*
*/
public class NumberToWordConvertor {
//String to formulate the required word representation
private String string;
private String SPACE=" ";

private String a[] = { "", "one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", };
private String b[] = { "hundred", "thousand", "lakh", "crore" };
private String c[] = { "ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen", "eighteen", "ninteen", };
private String d[] = {
"twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty",
"ninty" };
/**
* This method converts the passed number to its word representation
* @param numberToBeConverted
* @return converted number in words
*/
public String convertPassedNumberToWord(int numberToBeConverted) {

int counter = 1;
int current;
string = "";
if (numberToBeConverted == 0) {
string = "zero";
}
while (numberToBeConverted != 0) {
switch (counter) {
case 1:
current = numberToBeConverted % 100;
currentNumber(current);
if (numberToBeConverted > 100 && numberToBeConverted % 100 != 0) {
show("and ");
}
numberToBeConverted /= 100;
break;
case 2:
current = numberToBeConverted % 10;
if (current != 0) {
show(SPACE);
show(b[0]);
show(SPACE);
currentNumber(current);
}
numberToBeConverted /= 10;
break;
case 3:
current = numberToBeConverted % 100;
if (current != 0) {
show(SPACE);
show(b[1]);
show(SPACE);
currentNumber(current);
}
numberToBeConverted /= 100;
break;
case 4:
current = numberToBeConverted % 100;
if (current != 0) {
show(SPACE);
show(b[2]);
show(SPACE);
currentNumber(current);
}
numberToBeConverted /= 100;
break;
case 5:
current = numberToBeConverted % 100;
if (current != 0) {
show(SPACE);
show(b[3]);
show(SPACE);
currentNumber(current);
}
numberToBeConverted /= 100;
break;
}
counter++;
}
return string;
}
public void currentNumber(int number) {
int x, y;
if (number < 10) {
show(a[number]);
}
if (number > 9 && number < 20) {
show(c[number - 10]);
}
if (number > 19) {
x = number % 10;
if (x == 0) {
y = number / 10;
show(d[y - 2]);
} else {
y = number / 10;
show(a[x]);
show(" ");
show(d[y - 2]);
}
}
}
public void show(String s) {
String t;
t = string;
string = s;
string += t;
}
public static void main(String args[]) {
NumberToWordConvertor numberToWordConvertor = new NumberToWordConvertor();
System.out.println("99999999: in words is -> "+ numberToWordConvertor.convertPassedNumberToWord(99999999));
System.out.println("0: in words is -> " + numberToWordConvertor.convertPassedNumberToWord(0));
System.out.println("65234: in words is -> " + numberToWordConvertor.convertPassedNumberToWord(65234));
System.out.println("45: in words is -> " + numberToWordConvertor.convertPassedNumberToWord(45));
System.out.println("3532: in words is -> " + numberToWordConvertor.convertPassedNumberToWord(3532));
System.out.println("654642345: in words is -> "+ numberToWordConvertor.convertPassedNumberToWord(654642345));
System.out.println("245: in words is -> "+ numberToWordConvertor.convertPassedNumberToWord(245));
System.out.println("345000: in words is -> "+ numberToWordConvertor.convertPassedNumberToWord(345000));
System.out.println("2355440: in words is -> "+ numberToWordConvertor.convertPassedNumberToWord(2355440));
System.out.println("165535001: in words is -> "+ numberToWordConvertor.convertPassedNumberToWord(165535001));
}
}