給定一個整數,打印該整數的英文描述(例如「One Thousand,Two Hundred Thirty Four」)。

  1. package Moderate;  
  2.   
  3. import CtCILibrary.AssortedMethods;  
  4.   
  5. /** 
  6.  * Given  any  integer, print  an  English  phrase  that  describes  the  integer  (e.g., "One 
  7. Thousand, Two Hundred Thirty  Four"). 
  8.  
  9. 給定一個整數,打印出它的讀法 
  10. 如1234 打印 "One Thousand, Two Hundred Thirty  Four" 
  11.  * 
  12.  */  
  13.   
  14. public class S17_7 {  
  15.     public static String[] digits = { "One", "Two", "Three", "Four", "Five",  
  16.             "Six", "Seven", "Eight", "Nine" };  
  17.     public static String[] teens = { "Eleven", "Twelve", "Thirteen",  
  18.             "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen",  
  19.             "Nineteen" };  
  20.     public static String[] tens = { "Ten", "Twenty", "Thirty", "Forty",  
  21.             "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };  
  22.     public static String[] bigs = { "", "Thousand", "Million" };  
  23.   
  24.     public static String numToString(int number) {  
  25.         if (number == 0) {  
  26.             return "Zero";  
  27.         }  
  28.   
  29.         if (number < 0) {  
  30.             return "Negative " + numToString(-1 * number);  
  31.         }  
  32.         int count = 0;  
  33.         String str = "";  
  34.   
  35.         while (number > 0) {  
  36.             if (number % 1000 != 0) {  
  37.                 str = numToString100(number % 1000) + bigs[count] + " " + str;  
  38.             }  
  39.             number /= 1000;  
  40.             count++;  
  41.         }  
  42.   
  43.         return str;  
  44.     }  
  45.   
  46.     public static String numToString100(int number) {  
  47.         String str = "";  
  48.   
  49.         /* Convert hundreds place */  
  50.         if (number >= 100) {  
  51.             str += digits[number / 100 - 1] + " Hundred ";  
  52.             number %= 100;  
  53.         }  
  54.   
  55.         /* Convert tens place */  
  56.         if (number >= 11 && number <= 19) {  
  57.             return str + teens[number - 11] + " ";  
  58.         } else if (number == 10 || number >= 20) {  
  59.             str += tens[number / 10 - 1] + " ";  
  60.             number %= 10;  
  61.         }  
  62.   
  63.         /* Convert ones place */  
  64.         if (number >= 1 && number <= 9) {  
  65.             str += digits[number - 1] + " ";  
  66.         }  
  67.   
  68.         return str;  
  69.     }  
  70.   
  71.     public static void main(String[] args) {  
  72.         /* numbers between 100000 and 1000000 */  
  73.         for (int i = 0; i < 8; i++) {  
  74.             int value = (int) Math.pow(10, i);  
  75.             String s = numToString(-1 * value);  
  76.             System.out.println(-value + ": " + s);  
  77.         }  
  78.           
  79.   
  80.         /* numbers between 0 and 100 */  
  81.         for (int i = 0; i < 10; i++) {  
  82.             int value = AssortedMethods.randomIntInRange(0, 100);  
  83.             String s = numToString(value);  
  84.             System.out.println(value + ": " + s);  
  85.         }  
  86.   
  87.         /* numbers between 100 and 1000 */  
  88.         for (int i = 0; i < 10; i++) {  
  89.             int value = AssortedMethods.randomIntInRange(100, 1000);  
  90.             String s = numToString(value);  
  91.             System.out.println(value + ": " + s);  
  92.         }  
  93.   
  94.         /* numbers between 1000 and 100000 */  
  95.         for (int i = 0; i < 10; i++) {  
  96.             int value = AssortedMethods.randomIntInRange(1000, 100000);  
  97.             String s = numToString(value);  
  98.             System.out.println(value + ": " + s);  
  99.         }  
  100.   
  101.         /* numbers between 100000 and 1000000 */  
  102.         for (int i = 0; i < 10; i++) {  
  103.             int value = AssortedMethods.randomIntInRange(100000, 100000000);  
  104.             String s = numToString(value);  
  105. //          System.out.println(value + ": " + s);  
  106.         }  
  107.   
  108.         /* numbers between 100000 and 1000000 */  
  109.         for (int i = 0; i < 10; i++) {  
  110.             int value = AssortedMethods.randomIntInRange(100000000, 1000000000);  
  111.             String s = numToString(value);  
  112. //          System.out.println(value + ": " + s);  
  113.         }  
  114.     }  
  115. }
相關文章
相關標籤/搜索