Advertisement
Guest User

Java Convert Numeric Values to English Words Equivalent

a guest
Oct 24th, 2014
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.69 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6.  
  7. package convertnumbers;
  8.  
  9. /**
  10.  *
  11.  * @author k
  12.  */
  13.  
  14. interface ConvertNumbersToWords {
  15.  
  16.     public void convertNumber(int number);
  17.  
  18.     public String getNumberValue();
  19.  
  20.     public void clearValues();
  21.  
  22. }
  23.  
  24. public class ConvertNumbers {
  25.  
  26.     /**
  27.      * @param args the command line arguments
  28.      */
  29.     public static void main(String[] args) {
  30.  
  31.         //Your original arrays
  32.         String[] ones = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "teb", "eleven", "twelve", "thirteen",
  33.             "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
  34.         //For this to work properly, you have to have two empty strings for the first two values
  35.         String[] tens = {"", "", "twenty", "thirty", "fourty",
  36.             "fifty", "sixty", "seventy", "eighty", "ninety"};
  37.  
  38.         /* Anonymous inner class that convert Tens and Ones to the word equivalence
  39.          If you cannot use anonymous Inner classes you can take what is between the { }
  40.          and create a new class the implements the ConvertNumbersToWords interface  */
  41.         ConvertNumbersToWords convertTensAndOnes = new ConvertNumbersToWords() {
  42.  
  43.             private String numberValue = "";
  44.  
  45.             @Override
  46.             public void convertNumber(int number) {
  47.  
  48.                 if (number < 20) {
  49.                     numberValue = ones[number];
  50.                 } else {
  51.  
  52.                     String numberString = String.valueOf(number);
  53.  
  54.                     if (numberString.length() >= 2) {
  55.                         String lastDigit = numberString.substring(numberString.length() - 1);
  56.                         String secondToLastDigit = numberString.substring(numberString.length() - 2, numberString.length() - 1);
  57.                         int lastDigitAsInt = Integer.parseInt(lastDigit);
  58.                         int secondToLastDigitAsInt = Integer.parseInt(secondToLastDigit);
  59.                         numberValue = tens[secondToLastDigitAsInt] + "-"+ ones[lastDigitAsInt];
  60.                     }
  61.                 }
  62.             }
  63.  
  64.             @Override
  65.             public String getNumberValue() {
  66.                 return numberValue;
  67.             }
  68.  
  69.             @Override
  70.             public void clearValues() {
  71.                 this.numberValue = "";
  72.             }
  73.         };
  74.  
  75.         /* anonymous inner class that convert Hundres to the word equivalence, again
  76.          if you cannot use anonymous Inner classes just take what is between the { }
  77.          and create a new class the implements the ConvertNumbersToWords interface  */
  78.         ConvertNumbersToWords convertHundreds = new ConvertNumbersToWords() {
  79.  
  80.             private String numberValue = "";
  81.  
  82.             @Override
  83.             public void convertNumber(int number) {
  84.                 String numberString = String.valueOf(number);
  85.                 if (numberString.length() >= 3) {
  86.                     String hundredsDigitString = numberString.substring(numberString.length() - 3, numberString.length() - 2);
  87.                     int hundredsDigit = Integer.parseInt(hundredsDigitString);
  88.                     numberValue = ones[hundredsDigit];
  89.                 }
  90.             }
  91.            
  92.             @Override
  93.             public String getNumberValue() {
  94.                 if (numberValue != null && numberValue.length() > 0) {
  95.                     return numberValue + "-Hundred ";
  96.                 } else {
  97.                     return "";
  98.                 }
  99.             }
  100.  
  101.             @Override
  102.             public void clearValues() {
  103.                 this.numberValue = "";
  104.             }
  105.         };
  106.        
  107.         //TODO: create convertThousands anonymous inner class to covert the thousands place its word value
  108.  
  109.  
  110.         ConvertNumbersToWords[] convertNumbersToWords = new ConvertNumbersToWords[2];
  111.         convertNumbersToWords[0] = convertTensAndOnes;
  112.         convertNumbersToWords[1] = convertHundreds;
  113.         //TODO: add covertThousands anonymous inner class to ConvertNumbersToWords array
  114.        
  115.         // Begin Test with a few different numeric values
  116.         int myInt = 242;
  117.         int myInt2 = 9;
  118.         int myInt3 = 998;
  119.         int myInt4 = 47;
  120.  
  121.         StringBuilder sb = new StringBuilder();
  122.         for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
  123.             convertNumbersToWords[i].convertNumber(myInt);
  124.             sb.append(convertNumbersToWords[i].getNumberValue());
  125.         }
  126.         System.out.println(sb.toString());
  127.  
  128.         sb = new StringBuilder();
  129.         for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
  130.             convertNumbersToWords[i].clearValues();
  131.             convertNumbersToWords[i].convertNumber(myInt2);
  132.             sb.append(convertNumbersToWords[i].getNumberValue());
  133.         }
  134.         System.out.println(sb.toString());
  135.  
  136.         sb = new StringBuilder();
  137.         for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
  138.             convertNumbersToWords[i].clearValues();
  139.             convertNumbersToWords[i].convertNumber(myInt3);
  140.             sb.append(convertNumbersToWords[i].getNumberValue());
  141.         }
  142.         System.out.println(sb.toString());
  143.  
  144.         sb = new StringBuilder();
  145.         for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
  146.             convertNumbersToWords[i].clearValues();
  147.             convertNumbersToWords[i].convertNumber(myInt4);
  148.             sb.append(convertNumbersToWords[i].getNumberValue());
  149.         }
  150.         System.out.println(sb.toString());
  151.         //End Test
  152.  
  153.     }
  154.  
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement