这本来是我面试时面试官即兴给我出的一道面试题,当时由于面试比较紧张,时间比较仓促大致说了一下思路,写了一些伪代码。
事后觉得挺有意思的,就抽时间完整实现了,有不足之处望各位同仁多多指教。
static String LOWERE_STR = "1234567890";
static String UPPER_STR = "壹贰叁肆伍陆柒捌玖零";
static String [] POSITION_ARR = {"","拾","佰","仟","万","拾万","佰万","仟万","亿"};
public static void main(String[] args) {
int num = 102350;
String numStr = String.valueOf(num);
StringBuffer sbf = new StringBuffer();
int length = numStr.length();
for(int i=0;i<length;i++) {
// 小大写转换
int idx = LOWERE_STR.indexOf(numStr.charAt(i));
char val = UPPER_STR.charAt(idx);
if(String.valueOf(val).equals("零") && i==(length-1)) {
continue;
}
sbf.append(val);
if(String.valueOf(val).equals("零")) {
continue;
}
// 位数转换
int posIndex = length - i - 1;
String posVal = POSITION_ARR[posIndex];
sbf.append(posVal);
}
sbf.append("元").append("整");
System.out.println(sbf.toString());
}