帶單位轉換的我只將數字範圍定在十萬以內的正數並且沒考慮
0
需要向上調整範圍的童鞋自己修改代碼呦歡迎指出錯誤
先看效果再看代碼
不多說屁話上代碼
/**
* <p>@description: 阿拉伯數字轉中文數字(不帶單位) </p>
* <p>@method: numberConvertToBaseChinese </p>
* <p>@author: 楓鈴也 </p>
* <p>@since: 2019-10-10 16:03 </p>
*
* <p>@return java.lang.String </p>
*/
public static String numberConvertToBaseChinese(int num) {
StringBuffer buffer = new StringBuffer();
char[] nums = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
char[] baseChar = Integer.toString(num).toCharArray();
for (char c : baseChar) {
buffer.append(nums[c - 48]);
}
return buffer.toString();
}
/**
* <p>@description: 阿拉伯數字轉中文數字(帶單位) </p>
* <p>@method: numberConvertToChinese </p>
* <p>@author: 楓鈴也 </p>
* <p>@since: 2019-10-10 16:03 </p>
*
* <p>@return java.lang.String </p>
*/
public static String numberConvertToChinese(int num) {
char[] nums = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
char[] units = {' ', '十', '百', '千', '萬'};
char[] baseChar = Integer.toString(num).toCharArray();
char[] numChar = new char[baseChar.length];
for (int i = 0; i < baseChar.length; i++) {
numChar[i] = nums[baseChar[i] - 48];
}
char[] unit = new char[numChar.length];
unit = Arrays.copyOf(units, unit.length);
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < numChar.length; i++) {
if (numChar[i] != nums[0]) {
buffer.append(numChar[i]).append(unit[unit.length - i - 1]);
}else {
buffer.append(numChar[i]);
}
}
int index = 0;
while ((index = buffer.indexOf(nums[0] + String.valueOf(nums[0]))) > 0) {
buffer.replace(index, index + 2, String.valueOf(nums[0]));
}
return buffer.toString().substring(0, buffer.length() - 1);
}
神馬,沒有註釋?
我故意的(此處拒絕板磚和拖鞋之類的具有任何殺傷性的物品),嘿嘿
自己看懂了纔算是有收穫歡迎指出錯誤