编写一函数,将一个数字(Integer)转换成中文返回。 这个算法可能还会有错,测试用例不够!!! package java_algorithm; public class NumberToChinese { /** * @param args */ public static int change(int n) { char[] s = { '壹', '贰', '叁', '肆', '伍', '陸', '柒', '捌', '玖' }; char[] t = { '十', '佰', '仟', '万', '十', '百', '千', '亿', '十', '百', '千' }; StringBuilder sb = new StringBuilder(); if (n == 0) { System.out.println("0/n零"); return 1; } if (n < 0) { sb.append("负"); } String str = String.valueOf(Math.abs(n)); int length = str.length(); boolean flag=false; for (int i = 0; i < length; i++) { if (length > 10) { if (i == (length - 10)) { sb.append("亿"); } } else if (length > 5) { if (i == (length - 5)) { sb.append("万"); } } if (str.charAt(i) == '0') { if (sb.charAt(sb.length() - 1) == '零') continue; sb.append("零"); } else { if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '万' && length != 5&&!flag) { sb.deleteCharAt(sb.length() - 1); flag=true; } sb.append(s[str.charAt(i) - '1']); if (length > 1 && i != length - 1) { sb.append(t[length - i - 2]); } } } if (sb.charAt(sb.length() - 1) == '零') { sb.deleteCharAt(sb.length() - 1); } if(sb.indexOf("壹十")!=-1){ sb.deleteCharAt(0); } System.out.println(n + "/n" + sb); return 1; } public static void main(String[] args) { // TODO Auto-generated method stub change(Integer.MAX_VALUE); change(2123456789); change(123456789); change(11200001); change(1234567); change(120001); change(31509); change(9090); change(123); change(20); change(1); change(0); change(Integer.MIN_VALUE + 1); change(-2123456789); change(-123456789); change(-11200001); change(-1234567); change(-1010001); change(-330509); change(-9090); change(-123); change(-20); change(-1); } }