Showing posts with label convert. Show all posts
Showing posts with label convert. Show all posts

Wednesday, April 18, 2012

Converting Numbers to Words using Java


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;
         }

      }

Converting Numbers to Words using Javascript

<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function test_skill1()
{
  var junkVal1=document.getElementById('rupees').value;
  junkVal = Math.round(junkVal1);
  if(junkVal1.indexOf(".")>0)
  {
    var pre = junkVal1.substring(junkVal1.indexOf(".")+1,junkVal1.length);
  }
  else
  {
    var pre = "0";
  }
  if(pre.length==1)pre=pre+"0";
  if(pre==0)
  {
    var retValue = test_skill(junkVal);
    document.getElementById('container').innerHTML=retValue+' Rupees';
  }
  else{
    var retValue = test_skill(junkVal);
    var retValue1 = test_skill(pre);
    document.getElementById('container').innerHTML=retValue+' Rupees and '+retValue1+'Paisa Only';
  }   
}
function test_skill(junkVal) {
    var obStr=new String(junkVal);
    numReversed=obStr.split("");
    actnumber=numReversed.reverse();

    if(Number(junkVal) >=0){
        //do nothing
    }
    else{
        alert('wrong Number cannot be converted');
        return false;
    }
    if(Number(junkVal)==0){
        return 'Rupees Zero';
        return false;
    }
    if(actnumber.length>9){
        alert('Oops!!!! the Number is too big to covertes');
        return false;
    }

    var iWords=["Zero", " One", " Two", " Three", " Four", " Five", " Six", " Seven", " Eight", " Nine"];
    var ePlace=['Ten', ' Eleven', ' Twelve', ' Thirteen', ' Fourteen', ' Fifteen', ' Sixteen', ' Seventeen', ' Eighteen', ' Nineteen'];
    var tensPlace=['dummy', ' Ten', ' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty', ' Seventy', ' Eighty', ' Ninety' ];

    var iWordsLength=numReversed.length;
    var totalWords="";
    var inWords=new Array();
    var finalWord="";
    j=0;
    for(i=0; i<iWordsLength; i++){
        switch(i)
        {
        case 0:
            if(actnumber[i]==0 || actnumber[i+1]==1 ) {
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            inWords[j]=inWords[j]+' ';
            break;
        case 1:
            tens_complication();
            break;
        case 2:
            if(actnumber[i]==0) {
                inWords[j]='';
            }
            else if(actnumber[i-1]!=0 && actnumber[i-2]!=0) {
                inWords[j]=iWords[actnumber[i]]+' Hundred and';
            }
            else {
                inWords[j]=iWords[actnumber[i]]+' Hundred ';
            }
            break;
        case 3:
            if(actnumber[i]==0 || actnumber[i+1]==1) {
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            if(actnumber[i+1] != 0 || actnumber[i] > 0){
                inWords[j]=inWords[j]+" Thousand";
            }
            break;
        case 4:
            tens_complication();
            break;
        case 5:
            if(actnumber[i]==0 || actnumber[i+1]==1) {
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            if(actnumber[i+1] != 0 || actnumber[i] > 0){
                inWords[j]=inWords[j]+" Lakh";
            }
            break;
        case 6:
            tens_complication();
            break;
        case 7:
            if(actnumber[i]==0 || actnumber[i+1]==1 ){
                inWords[j]='';
            }
            else {
                inWords[j]=iWords[actnumber[i]];
            }
            inWords[j]=inWords[j]+" Crore";
            break;
        case 8:
            tens_complication();
            break;
        default:
            break;
        }
        j++;
    }

    function tens_complication() {
        if(actnumber[i]==0) {
            inWords[j]='';
        }
        else if(actnumber[i]==1) {
            inWords[j]=ePlace[actnumber[i-1]];
        }
        else {
            inWords[j]=tensPlace[actnumber[i]];
        }
    }
    inWords.reverse();
    for(i=0; i<inWords.length; i++) {
        finalWord+=inWords[i];
    }
    return finalWord;
}
</SCRIPT>
</head>
<body>
<form>
<input type="text" name="rupees" id="rupees" />
<input type="button" name="sr1" value="Click Here" onClick="test_skill1()"/>
    <div id="container"></div>
</form>
</body>
</html>