优化:
使用java将数字转化为中文汉字_java数字转中文_javaerly的博客-CSDN博客
public static void convertNumToCN(Long num){
String [] nums ={"一","二","三","四","五","六","七","八","九"};
//由于int 类型的占4个字节,所以正整数的范围为 21 4748 3647 ,所以采用 long类型 ,可以转到 千 亿
String []unit = {" ","十","百","千","万","十","百","千","亿","十","百","千"};
//先将数字转为字符串
String numStr = String.valueOf(num);
//将该字符串numStr 存到字符数组中
char[] chars = numStr.toCharArray();
//获取该字符数组的长度
int length = chars.length;
//定义接获凭借的字符串
String str = "";
for (int i = 0; i < length; i++) {
char cha = chars[i];
// 将字符 转为 int 类型
int c = cha - '0';
//如果数字是就不用处理(不用凭借中文数字字符和中文数字单位)
//c 不是 0,中文数字: nums[c - 1]
// 中文单位:unit[length - c - 1]
if (c != 0){
str += nums[c - 1] + unit[length - i - 1];
}
}
System.out.println(str);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true){
try {
//提示如果输入的是 -1 就退出数字的转中文
System.out.println("===================输入-1 表示退出转换功能=================");
System.out.print("请输入要转换的整数:");
String numStr = scanner.nextLine();
//如果是-1 就退出程序
if ("-1".equals(numStr)){
System.out.println("退出数字转换服务!!");
break;
}
Long longNum = Long.valueOf(numStr);
//校验数字长度不能超过12位
if (!"".equals(numStr) && numStr.length() > 12){
throw new OutNumberLength("输入数字长度不能超过12位");
}
ConvertUtils.convertNumToCN(longNum);
} catch (NumberFormatException e) {
System.out.println("输入数字有误");
}catch (OutNumberLength e){
System.out.println(e.getMessage());
}
}
}