给定一个整数,打印该整数的英文描述(例如“One Thousand,Two Hundred Thirty Four”)。

原创
2016/11/26 09:54
阅读数 126
  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. }
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部