代码:
public class Test {
private static final String[] units = {"", "十", "百", "千", "万", "十", "百", "千", "亿"};
private static final char[] nums = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
public static void main(String[] args) {
System.out.println(formatInteger(1500));
}
public static String formatInteger(int num) {
StringBuilder sb = new StringBuilder();
char[] val = String.valueOf(num).toCharArray();
int len = val.length;
for (int i = 0; i < len; i++) {
String m = String.valueOf(val[i]);
int n = Integer.valueOf(m);
if (n == 0) {
//如果当前位置的前一个位置是0 忽略
if (len > 1 && '0' == val[i - 1]) {
continue;
} else {
sb.append(nums[n]);
}
} else {
String numStr = String.valueOf(nums[n]);
String unitStr = units[(len - 1) - i];
//特殊处理 一十 --> 十
if("一".equals(numStr) && "十".equals(unitStr)) {
sb.append(unitStr);
} else {
sb.append(numStr).append(unitStr);
}
}
}
//去除尾部多余的零
String s = sb.toString();
if(s.length() > 1 && "零".equals(String.valueOf(s.charAt(s.length()-1))))
s = s.substring(0, s.length()-1);
return s;
}
}
运行结果:
一千五百