之前写过一篇博客,记录的是如何将Java中文大写数字转int型,今天遇到的问题是将Java int型转换成中文大写数字表示。
下面是程序,很容易理解,不过,只支持10000以内的数字转换:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | public static String intToChnNumConverter(int num){ String resultNumber = null; if(num > 10000 || num < 0){ return ""; } HashMap chnNumbers = new HashMap(); chnNumbers.put(0, "零"); chnNumbers.put(1, "一"); chnNumbers.put(2, "二"); chnNumbers.put(3, "三"); chnNumbers.put(4, "四"); chnNumbers.put(5, "五"); chnNumbers.put(6, "六"); chnNumbers.put(7, "七"); chnNumbers.put(8, "八"); chnNumbers.put(9, "九"); HashMap unitMap = new HashMap(); unitMap.put(1, ""); unitMap.put(10, "十"); unitMap.put(100, "百"); unitMap.put(1000, "千"); int[] unitArray = {1000, 100, 10, 1}; StringBuilder result = new StringBuilder(); int i = 0; while(num > 0){ int n1 = num / unitArray[i]; if(n1 > 0){ result.append(chnNumbers.get(n1)).append(unitMap.get(unitArray[i])); } if(n1 == 0){ if(result.lastIndexOf("零") != result.length()-1){ result.append("零"); } } num = num % unitArray[i++]; if(num == 0){ break; } } resultNumber = result.toString(); if(resultNumber.startsWith("零")){ resultNumber = resultNumber.substring(1); } if(resultNumber.startsWith("一十")){ resultNumber = resultNumber.substring(1); } return resultNumber; } |
No Comments yet »