浅嵌套,这应该不会看吐吧
[Java] 纯文本查看 复制代码 public String convert(int originalNum) {
String targetStr = ""; // 要返回的结果
//String[] numChar = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"};
String[] numChar = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
//String[] unitChar = {"", "S", "B", "Q"};
String[] unitChar = {"", "十", "百", "千"};
//String[] groupUnitChar = {"", "W", "y"};
String[] groupUnitChar = {"", "万", "亿"};
int tmp = originalNum;
int nums[] = new int[9];
// 默认输入9位数,提取每位上的数字
for (int i = 0; i < nums.length; i++) {
nums[i] = tmp % 10;
tmp = tmp / 10;
}
int zeroCount = 0;
// 从高位开始,转换每位上的数字
for (int i = nums.length - 1; i >= 0; i--) {
String tmpStr = "";
boolean fillZero = false;
int numIndex = nums[i];
int unitIndex = i % 4;
if (nums[i] > 0) { // 该位非零,拼接
tmpStr = tmpStr + numChar[numIndex] + unitChar[unitIndex];
fillZero = true;
} else if(!targetStr.equals("")) { // 检测是否为有效的零,有效是指该位之前出现过非零数字
zeroCount++;
} else {
continue;
}
if (i % 4 == 0) {
tmpStr += groupUnitChar[i / 4];
}
if (zeroCount > 0 && fillZero) {
tmpStr = numChar[0] + tmpStr;
zeroCount = 0;
}
targetStr += tmpStr;
}
return targetStr;
} |