1  import java.util.Scanner;
  2  
  3  /**
  4     This program turns an integer into its English name.
  5  */
  6  public class IntegerName
  7  {
  8     public static void main(String[] args)
  9     {  
 10        Scanner in = new Scanner(System.in);
 11        System.out.print("Please enter a positive integer < 1000: ");
 12        int input = in.nextInt();
 13        System.out.println(intName(input));
 14     }
 15  
 16     /**
 17        Turns a number into its English name.
 18        @param number a positive integer < 1,000
 19        @return the name of the number (e.g. "two hundred seventy four")
 20     */
 21     public static String intName(int number)
 22     {
 23        int part = number; // The part that still needs to be converted 
 24        String name = ""; // The name of the number
 25  
 26        if (part >= 100)
 27        {  
 28           name = digitName(part / 100) + " hundred";
 29           part = part % 100;
 30        }
 31  
 32        if (part >= 20)
 33        {  
 34           name = name + " " + tensName(part);
 35           part = part % 10;
 36        }   
 37        else if (part >= 10)
 38        {  
 39           name = name + " " + teenName(part);
 40           part = 0;
 41        }
 42  
 43        if (part > 0)
 44        {
 45           name = name + " " + digitName(part);
 46        }
 47  
 48        return name;
 49     }
 50  
 51     /**
 52        Turns a digit into its English name.
 53        @param digit an integer between 1 and 9
 54        @return the name of digit ("one" ... "nine")
 55     */
 56     public static String digitName(int digit)
 57     {  
 58        if (digit == 1) { return "one"; }
 59        if (digit == 2) { return "two"; }
 60        if (digit == 3) { return "three"; }
 61        if (digit == 4) { return "four"; }
 62        if (digit == 5) { return "five"; }
 63        if (digit == 6) { return "six"; }
 64        if (digit == 7) { return "seven"; }
 65        if (digit == 8) { return "eight"; }
 66        if (digit == 9) { return "nine"; }
 67        return "";
 68     }
 69  
 70     /**
 71        Turns a number between 10 and 19 into its English name.
 72        @param number an integer between 10 and 19
 73        @return the name of the given number ("ten" ... "nineteen")
 74     */
 75     public static String teenName(int number)
 76     {  
 77        if (number == 10) { return "ten"; }
 78        if (number == 11) { return "eleven"; }
 79        if (number == 12) { return "twelve"; }
 80        if (number == 13) { return "thirteen"; }
 81        if (number == 14) { return "fourteen"; }
 82        if (number == 15) { return "fifteen"; }
 83        if (number == 16) { return "sixteen"; }
 84        if (number == 17) { return "seventeen"; }
 85        if (number == 18) { return "eighteen"; }
 86        if (number == 19) { return "nineteen"; }
 87        return "";
 88     }
 89  
 90     /**
 91        Gives the name of the tens part of a number between 20 and 99.
 92        @param number an integer between 20 and 99
 93        @return the name of the tens part of the number ("twenty" ... "ninety")
 94     */
 95     public static String tensName(int number)
 96     {   
 97        if (number >= 90) { return "ninety"; }
 98        if (number >= 80) { return "eighty"; }
 99        if (number >= 70) { return "seventy"; }
100        if (number >= 60) { return "sixty"; }
101        if (number >= 50) { return "fifty"; }
102        if (number >= 40) { return "forty"; }
103        if (number >= 30) { return "thirty"; }
104        if (number >= 20) { return "twenty"; }
105        return "";
106     }
107  }