面试遇到的,当时写的不好,回来整理一下思路,写出来后还算满意。
public class Test {
private String[] unit = { "", "十", "百", "千" };
private String[] segmentUnit = { "", "万", "亿", "万亿", "亿亿" };
private String[] num = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
public String numberToChNumber(long numberm) {
String str = "";
char[] numChar = (new StringBuffer("" + numberm).reverse().toString()).toCharArray();
int segment = (numChar.length - 1) / 4 + 1;
for (int segmentIndex = 1; segmentIndex <= segment; segmentIndex++) {
str = segmentUnit[segmentIndex - 1] + str;
int start = (segmentIndex - 1) * 4;
for (int j = 0; j <= 3; j++) {
int index = start + j;
if (index < numChar.length) {
if (numChar[index] == 48 && index == start) {
continue;
} else if (numChar[index] == 48 && numChar[index - 1] == 48) {
continue;
} else if (numChar[index] == 48 && numChar[index - 1] != 48) {
str = num[numChar[index] - 48] + str;
} else {
str = num[numChar[index] - 48] + unit[j] + str;
}
}
}
}
return str;
}
public static void main(String[] args) {
System.out.println(new Test().numberToChNumber(new Long("2212023003400")));
}