public class WordsFromDigitsIterativeDemo
1: //WordsFromDigitsIterativeDemo.java
2:
3: import java.util.Scanner;
4:
5: public class WordsFromDigitsIterativeDemo
6: {
7: public static void main(String[] args)
8: {
9: System.out.print("\nEnter a positive integer: ");
10: Scanner keyboard = new Scanner(System.in);
11: int number = keyboard.nextInt();
12: System.out.println("\nThe digits in that integer are:");
13: displayAsWords(number);
14: System.out.println();
15:
16: System.out.println("\nIf you add ten to that integer, ");
17: System.out.println("the digits in the new integer are:");
18: number = number + 10;
19: displayAsWords(number);
20: System.out.println();
21: }
22:
23: /**
24: Precondition: number >= 0
25: Displays the digits in number as words.
26: */
27: public static void displayAsWords(int number)
28: {
29: int divisor = getPowerOfTen(number);
30: int next = number;
31: while (divisor >= 10)
32: {
33: System.out.print(getWordFromDigit(next / divisor) + " ");
34: next = next % divisor;
35: divisor = divisor / 10;
36: }
37: System.out.print(getWordFromDigit(next / divisor) + " ");
38: }
39:
40: //Precondition: n >= 0.
41: //Returns 10 raised to a power one less than the number of digits in n.
42: private static int getPowerOfTen(int n)
43: {
44: int result = 1;
45: while (n >= 10)
46: {
47: result = result * 10;
48: n = n / 10;
49: }
50: return result;
51: }
52:
53: //Precondition: 0 <= digit <= 9
54: //Returns the word for the argument digit.
55: private static String getWordFromDigit(int digit)
56: {
57: String result = null;
58: switch (digit)
59: {
60: case 0: result = "zero"; break;
61: case 1: result = "one"; break;
62: case 2: result = "two"; break;
63: case 3: result = "three"; break;
64: case 4: result = "four"; break;
65: case 5: result = "five"; break;
66: case 6: result = "six"; break;
67: case 7: result = "seven"; break;
68: case 8: result = "eight"; break;
69: case 9: result = "nine"; break;
70: default:
71: System.out.println("Fatal Error.");
72: System.exit(0);
73: break;
74: }
75: return result;
76: }
77: }
78: