【算法】將阿拉伯數字轉為中文大寫


100689123
轉換為:
壹億零佰陸拾捌萬玖仟壹佰貳拾叄元

直接上代碼:
 1 package main;
 2 
 3 import java.util.concurrent.ExecutorService;
 4 import java.util.concurrent.Executors;
 5 import java.util.concurrent.locks.Condition;
 6 import java.util.concurrent.locks.Lock;
 7 import java.util.concurrent.locks.ReentrantLock;
 8 
 9 public class Main {
10     public static void main(String[] args) {
11         System.out.println(cov(convert(100689123)));
12     }
13 
14     private static final char[] data = new char[]{'零', '壹', '貳', '叄', '肆', '伍', '陸', '柒', '捌', '玖'};
15     private static final char[] units = new char[]{'元', '拾', '佰', '仟', '萬', '拾', '佰', '仟', '億'};
16 
17     /**
18      * 對替換掉的數字進行處理
19      * @param str
20      * @return
21      */
22     private static String cov(String str) {
23         StringBuffer sb = new StringBuffer(str);
24 
25         //System.out.println("1"+sb.reverse().toString());
26         str = sb.reverse().toString().replaceAll("零[拾佰仟]", "零").replaceAll("零+萬", "萬").replaceAll("零+元", "元").replaceAll("零+", "零");
27         System.out.println("2"+str);
28         return new StringBuffer(str).reverse().toString();
29     }
30 
31     /**
32      * 現將各個后面統統加上單位
33      * @param money
34      * @return
35      */
36     public static String convert(int money) {
37         StringBuffer sbf = new StringBuffer();
38         int unit = 0;
39         while (money != 0) {
40             sbf.insert(0, units[unit++]);
41             int number = money % 10;
42             sbf.insert(0, data[number]);
43             money /= 10;
44         }
45         System.out.println(sbf.toString());
46         return sbf.toString();
47     }
48 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM