数字转换成中文汉字数字

 1 class Student {
 2     static String[] ss = new String[]{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
 3     static String[] mm = new String[]{"仟", "佰", "拾", ""};
 4     static String[] hh = new String[]{"", "萬", "亿", "兆","京","垓"};
 5 
 6     int dd = 123456789;
 7 
 8     public static void main(String[] args) {
 9         read("22222222222222222222222");
10     }
11 
12     private static void read(String num) {
13         String[] strings = num.split("\\.");
14         String integer = strings[0];
15         String zhengs =readInteger(integer);
16         String xiaos="";
17         if(strings.length==2){
18             String decimal = strings[1];
19              xiaos="点"+readDecimal(decimal);
20         }
21         String xx=zhengs+xiaos;
22         System.out.println(xx);
23     }
24 
25     private static String readInteger(String integer) {
26         int mark = integer.length();
27         int star = mark - 4 < 0 ? 0 : mark - 4;
28         int end = mark;
29         StringBuilder stringBuilder = new StringBuilder();
30         for (int i = 0; i <= integer.length() / 4; i++) {
31             String nn = integer.substring(star, end);
32             mark=star;
33             star = mark - 4 < 0 ? 0 : mark - 4;
34             end = mark;
35             String nn1 = readfour(nn);
36             if (!nn1.equals("")) {
37                 stringBuilder = stringBuilder.insert(0,nn1 + hh[i]);
38             }
39 
40         }
41         if(stringBuilder.charAt(0) == '零'){
42             stringBuilder.replace(0, 1, "");
43         }
44         return stringBuilder.toString();
45     }
46 
47     private static String readDecimal(String decimal) {
48         StringBuilder stringBuilder = new StringBuilder();
49         for (int i = 0; i < decimal.length(); i++) {
50             stringBuilder.append(ss[Integer.parseInt(decimal.charAt(i) + "")]);
51         }
52         return stringBuilder.toString();
53     }
54 
55     private static String readfour(String nn) {
56         StringBuilder stringBuilder = new StringBuilder();
57         int d=4-nn.length();
58         if(d!=0){
59             for (int i = 0; i <d ; i++) {
60                 nn="0"+nn;
61             }
62         }
63         for (int i = 0; i < nn.length(); i++) {
64             if (nn.charAt(i) == '0') {
65                 stringBuilder.append(ss[Integer.parseInt(nn.charAt(i) + "")]);
66             } else
67                 stringBuilder.append(ss[Integer.parseInt(nn.charAt(i) + "")] + mm[i]);
68         }
69 
70         //多个零变一个零
71         for (int i = 0; i < stringBuilder.length(); i++) {
72             if (stringBuilder.charAt(i) == '零') {
73                 if((i+1)==stringBuilder.length())
74                     continue;
75                 if (stringBuilder.charAt(i + 1) == '零') {
76                     stringBuilder.replace(i + 1, i + 2, "");
77                     i=i-1;
78                 }
79             }
80         }
81         //去掉末尾的零
82         if (stringBuilder.charAt(stringBuilder.length() - 1) == '零') {
83             stringBuilder.replace(stringBuilder.length() - 1, stringBuilder.length(), "");
84         }
85 
86         return stringBuilder.toString();
87     }
88 
89 
90 }

 

转载于:https://www.cnblogs.com/hxz-nl/p/10929983.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值