给定一个整数 请你输出这个整数的中文读法
数据范围 |val| ≤10^9
- 输入: 114514
- 输出: "十一万四千五百一十四"
- 输入:1000
- 输出:“一千”
- 输入:-1035
- 输出: "负一千零三十五"
private static final String[] digits = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; public String num2cn(int n) { if (n == 0) return digits[0]; String sign = ""; long num = n; if (num < 0) { sign = "负"; num = -num; } return sign + convert(num, true); } private String convert(long num, boolean isHighest) { if (num < 10000) { return convertBelow10000((int)num, isHighest); } if (num < 100000000) { long wan = num / 10000; long rest = num % 10000; String result = convert(wan, true) + "万"; if (rest != 0) { if (rest < 1000) { result += "零" + convert(rest, false); } else { result += convert(rest, false); } } return result; } else { long yi = num / 100000000; long rest = num % 100000000; String result = convert(yi, true) + "亿"; if (rest != 0) { if (rest < 10000000) { result += "零" + convert(rest, false); } else { result += convert(rest, false); } } return result; } } private String convertBelow10000(int num, boolean isHighest) { if (num < 10) { return digits[num]; } if (num < 100) { int ten = num / 10; int unit = num % 10; if (isHighest && ten == 1) { return "十" + (unit == 0 ? "" : digits[unit]); } else { return digits[ten] + "十" + (unit == 0 ? "" : digits[unit]); } } if (num < 1000) { int hundred = num / 100; int rem = num % 100; String result = digits[hundred] + "百"; if (rem != 0) { if (rem < 10) { result += "零" + convertBelow10000(rem, false); } else { if (rem < 10) { result += "零" + convertBelow10000(rem, false); } else { result += convertBelow10000(rem, false); } } } return result; } int thousand = num / 1000; int rem = num % 1000; String result = digits[thousand] + "千"; if (rem != 0) { if (rem < 100) { result += "零" + convertBelow10000(rem, false); } else { result += convertBelow10000(rem, false); } } return result; }
Comments NOTHING