给定一个整数,请你输出这个整数的中文读法。
例如:
153,读作一百五十三
103,读作一百零三
1003,读作一千零三
数据范围:
import java.util.*; public class Solution { public String num2cn (int num) { String[] arr1 = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; String[] arr2 = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "万", "十", "百", "千", "亿"}; //可继续追加更高位转换值 if (num == 0) { return "零"; } boolean negative = false; if (num < 0) { num = Math.abs(num); negative = true; } String english = String.valueOf(num); String result = ""; for (int i = 0; i < english.length(); i++) { int des_i = english.length() - 1 - i;//倒序排列设值 result = arr2[i] + result; int arr1_index = Integer.parseInt(String.valueOf(english.charAt(des_i))); result = arr1[arr1_index] + result; } //将【零千、零百】换成【零】 【十零】换成【十】 result = result.replaceAll("零(千|百|十)", "零").replaceAll("十零", "十"); //合并中间多个零为一个零 result = result.replaceAll("零+", "零"); //将【零亿】换成【亿】【零万】换成【万】 result = result.replaceAll("零亿", "亿").replaceAll("零万", "万"); //将【亿万】换成【亿】 result = result.replaceAll("亿万", "亿"); //移除末尾的零 result = result.replaceAll("零+$", ""); //将【零一十】换成【零十】 //result = result.replaceAll("零一十", "零十");//貌似正规读法是零一十 //将【一十】换成【十】 result = result.replaceAll("^一十", "十"); if(negative) { result = "负" + result; } return result; } }