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