给定一个整数,打印该整数的英文描述(例如“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. }

转载于:https://my.oschina.net/u/2822116/blog/794612

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值