A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:键盘输入一个任意的阿拉伯数字,转换为中文的一、二、三,如:12345,结果:一万二千三百四十五,求大神支招!!!

1 个回复

倒序浏览

  1. import java.util.Scanner;

  2. public class convertNum {
  3.         public static void main(String[] args) {
  4.                 System.out.println(convertNum());
  5.         }
  6.        
  7.         /*private final static String[] STR_NUMBER = { "零", "壹", "贰", "叁", "肆", "伍",
  8.         "陆", "柒", "捌", "玖" };*/
  9.         private final static String[] STR_NUMBER = { "零", "一", "二", "三", "四", "五",
  10.             "六", "七", "八", "九" };
  11.     private final static String[] STR_UNIT = { "", "拾", "佰", "仟", "万", "拾",
  12.             "佰", "仟", "亿", "拾", "佰", "仟" };
  13.    
  14.     /**
  15.      * 转换方法
  16.      * */
  17.         public static String convertNum() {
  18.                         // 接收字符串
  19.                 String str = getNum();
  20.                         // 反转字符串
  21.                 str = new StringBuilder(str).reverse().toString();
  22.                        
  23.                 StringBuilder tempSB = new StringBuilder();
  24.                        
  25.                 for (int i = 0; i < str.length(); i++) {
  26.                         tempSB.append(STR_UNIT[i]);
  27.                         tempSB.append(STR_NUMBER[str.charAt(i) - '0']);
  28.                 }
  29.                         // 反转字符串
  30.                 str = tempSB.reverse().toString();
  31.                         // 替换字符串
  32.                 str = strReplace(str);
  33.                         // 返回转换后的字符串
  34.         return str;
  35.         }

  36.         /**
  37.          * 替换字符串
  38.          * */
  39.         private static String strReplace(String str) {
  40.                 // 替换字符串的字符
  41.                 str = strReplace(str, "零拾", "零");
  42.                 str = strReplace(str, "零佰", "零");
  43.                 str = strReplace(str, "零仟", "零");
  44.                 str = strReplace(str, "零万", "万");
  45.                 str = strReplace(str, "零亿", "亿");
  46.                 str = strReplace(str, "亿万", "亿");
  47.                 str = strReplace(str, "零零", "零");

  48.                 if (str.lastIndexOf("零") == str.length() - 1) {
  49.                         // 去掉字符串结尾的"零"
  50.                         str = str.substring(0, str.length() - 1);
  51.                 }
  52.                 return str;
  53.         }
  54.        
  55.     /**
  56.      * 替换指定字符
  57.      * */
  58.         private static String strReplace(String str, String oldStr, String newStr) {
  59.         while (true) {
  60.                     // 判断字符串中是否包含指定字符
  61.             if (str.indexOf(oldStr) == -1) {
  62.                 break;
  63.             }
  64.                     // 替换字符串
  65.             str = str.replaceAll(oldStr, newStr);
  66.         }
  67.                 // 返回替换后的字符串
  68.         return str;
  69.     }
  70.        
  71.     /**
  72.      * 返回输入的数字字符串
  73.      * */
  74.         private static String getNum() {
  75.             Scanner sc = new Scanner(System.in);
  76.            
  77.             System.out.println("请输入一串数字:");
  78.            
  79.             while (true) {
  80.                             // 接收字符串
  81.                     String str = sc.nextLine();
  82.                                 // 去掉所有空白字符
  83.                     str = str.replaceAll("\\s", "");
  84.                             // 判断字符串是否纯数字
  85.                         if (str.matches("\\d+")) {
  86.                                         // 去掉字符串前面的0
  87.                                 if(str.startsWith("0"))
  88.                                         str = str.replaceFirst("[0]+", "");
  89.                                         // 不超出转换范围则返回字符串
  90.                                 if(str.length() <= 12)
  91.                                         return str;
  92.                         }
  93.                        
  94.                         System.err.println("输入的不是纯数字,或超出转换范围(千亿以内),请重新输入:");
  95.                 }
  96.     }
  97. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马