class constNumtoLetter1
{
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 constNumtoLetter
{
public static void main(String[] args) throws Exception
{
double value = 1234567.25;
String finalVal = convertToWords(value);
System.out.println("final value:"+finalVal);
}
public static String convertToWords(double num1)
{
int num = (int)num1;
System.out.println("num:"+num);
String finalVal = convertToWords(num)+" Rupees";
System.out.println("iiiiiiiii:"+(""+num1).indexOf("."));
String num4 = (""+num1).substring((""+num1).indexOf('.')+1,(""+num1).length());
System.out.println("num4:"+num4);
if(num4.length()==1)num4+="0";
int num5 = Integer.parseInt(num4);
if(num5==0)
{
System.out.println("zero");
finalVal+= " Only";
}
else
{
System.out.println("non zero");
finalVal += " and";
finalVal += convertToWords(num5);
finalVal+= " Paisa Only";
}
System.out.println("num3:"+num4);
return finalVal;
}
public static String convertToWords(int num){
//Defining variables q is quotient, r is remainder
int len, q=0, r=0;
String ltr = " ";
String Str = "";
constNumtoLetter1 n = new constNumtoLetter1();
//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)
Str+= "";
// return Str;
}
return Str;
}
}
No comments:
Post a Comment