Tuesday, May 28, 2013
Convert Number to Word with Java
import java.util.Scanner;
public class NumberToWord {
public static final String[] DIGITS = {"One", "Two", "Three", "Four", "Five","Six", "Seven", "Eight", "Nine"};
public static final String[] TENS = {null, "Twenty", "Thirty", "Forty", "Fifty","Sixty", "Seventy", "Eighty", "Ninety"};
public static final String[] TEENS = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen","Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
public static String wordifyNumber(int number) { // use for every grouping of 10^3 - thousands, millions, billions, etc.
StringBuilder sb = new StringBuilder();
int x = number / 100;
if (x > 0) // something in hundreds column
sb.append(DIGITS[x - 1] + " hundred");
x = number % 100;
int tens = x / 10;
if (tens > 0) { // something in tens column
if (sb.length() > 0)
sb.append(" ");
if (tens > 1)
sb.append(TENS[tens - 1]);
else {
sb.append(TEENS[x - 10]);
number = 0; // TEENS accounts for tens + digit; done!
}
}
x = number % 10;
if (x > 0) { // something in digits column
if (sb.length() > 0) {
if (tens >= 2) // twenty-, thirty-, etc.
sb.append("-");
else
sb.append(" ");
}
sb.append(DIGITS[x - 1]);
}
return sb.toString();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("Enter a number (or -1 to quit): ");
int number = scanner.nextInt();
if (number == -1)
break;
else if (number == 0)
System.out.println("Number = zero");
else {
System.out.print("Your number "+number+" = ");
if (number > 999) {
System.out.print(wordifyNumber(number / 1000) + " thousand");
number = number % 1000;
System.out.print(number > 99 ? ", " : " ");
}
System.out.println(wordifyNumber(number));
}
} //end while
System.out.println("Done.");
}
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment