Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package convertnumbers;
- /**
- *
- * @author k
- */
- interface ConvertNumbersToWords {
- public void convertNumber(int number);
- public String getNumberValue();
- public void clearValues();
- }
- public class ConvertNumbers {
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- //Your original arrays
- String[] ones = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "teb", "eleven", "twelve", "thirteen",
- "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
- //For this to work properly, you have to have two empty strings for the first two values
- String[] tens = {"", "", "twenty", "thirty", "fourty",
- "fifty", "sixty", "seventy", "eighty", "ninety"};
- /* Anonymous inner class that convert Tens and Ones to the word equivalence
- If you cannot use anonymous Inner classes you can take what is between the { }
- and create a new class the implements the ConvertNumbersToWords interface */
- ConvertNumbersToWords convertTensAndOnes = new ConvertNumbersToWords() {
- private String numberValue = "";
- @Override
- public void convertNumber(int number) {
- if (number < 20) {
- numberValue = ones[number];
- } else {
- String numberString = String.valueOf(number);
- if (numberString.length() >= 2) {
- String lastDigit = numberString.substring(numberString.length() - 1);
- String secondToLastDigit = numberString.substring(numberString.length() - 2, numberString.length() - 1);
- int lastDigitAsInt = Integer.parseInt(lastDigit);
- int secondToLastDigitAsInt = Integer.parseInt(secondToLastDigit);
- numberValue = tens[secondToLastDigitAsInt] + "-"+ ones[lastDigitAsInt];
- }
- }
- }
- @Override
- public String getNumberValue() {
- return numberValue;
- }
- @Override
- public void clearValues() {
- this.numberValue = "";
- }
- };
- /* anonymous inner class that convert Hundres to the word equivalence, again
- if you cannot use anonymous Inner classes just take what is between the { }
- and create a new class the implements the ConvertNumbersToWords interface */
- ConvertNumbersToWords convertHundreds = new ConvertNumbersToWords() {
- private String numberValue = "";
- @Override
- public void convertNumber(int number) {
- String numberString = String.valueOf(number);
- if (numberString.length() >= 3) {
- String hundredsDigitString = numberString.substring(numberString.length() - 3, numberString.length() - 2);
- int hundredsDigit = Integer.parseInt(hundredsDigitString);
- numberValue = ones[hundredsDigit];
- }
- }
- @Override
- public String getNumberValue() {
- if (numberValue != null && numberValue.length() > 0) {
- return numberValue + "-Hundred ";
- } else {
- return "";
- }
- }
- @Override
- public void clearValues() {
- this.numberValue = "";
- }
- };
- //TODO: create convertThousands anonymous inner class to covert the thousands place its word value
- ConvertNumbersToWords[] convertNumbersToWords = new ConvertNumbersToWords[2];
- convertNumbersToWords[0] = convertTensAndOnes;
- convertNumbersToWords[1] = convertHundreds;
- //TODO: add covertThousands anonymous inner class to ConvertNumbersToWords array
- // Begin Test with a few different numeric values
- int myInt = 242;
- int myInt2 = 9;
- int myInt3 = 998;
- int myInt4 = 47;
- StringBuilder sb = new StringBuilder();
- for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
- convertNumbersToWords[i].convertNumber(myInt);
- sb.append(convertNumbersToWords[i].getNumberValue());
- }
- System.out.println(sb.toString());
- sb = new StringBuilder();
- for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
- convertNumbersToWords[i].clearValues();
- convertNumbersToWords[i].convertNumber(myInt2);
- sb.append(convertNumbersToWords[i].getNumberValue());
- }
- System.out.println(sb.toString());
- sb = new StringBuilder();
- for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
- convertNumbersToWords[i].clearValues();
- convertNumbersToWords[i].convertNumber(myInt3);
- sb.append(convertNumbersToWords[i].getNumberValue());
- }
- System.out.println(sb.toString());
- sb = new StringBuilder();
- for (int i = (convertNumbersToWords.length - 1); i >= 0; i--) {
- convertNumbersToWords[i].clearValues();
- convertNumbersToWords[i].convertNumber(myInt4);
- sb.append(convertNumbersToWords[i].getNumberValue());
- }
- System.out.println(sb.toString());
- //End Test
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement