整形数字转换成汉字

阅读: 评论:0

整形数字转换成汉字

整形数字转换成汉字

我的大致思路是将传入的数字每四位隔开按从高到低分别放入一个变量中(这个变量是String比较方便),然后每个变量分别转换成汉字(这些汉字最高肯定只有千数级别),彼此间再用一些单位(如万、亿)来衔接。代码(java)如下://number为传入的数字
public String numberToWord2(int number){String[] unit1={"","十","百","千"};String[] unit2={"","万","亿"};String[] numbers={"零","一","二","三","四","五","六","七","八","九"};if(number==0){return "零";}String sign=new String(number<0?"负":"");if(number<0){number=-number;}//存储最后结果StringBuilder result=new StringBuilder(sign);//将数字每四位划分为一组List<String> divisors=new ArrayList<String>();int remainder=number;int quantity=0;while(remainder>=10000){divisors.add(String.valueOf(remainder/10000));remainder=remainder%10000;quantity++;}divisors.add(String.valueOf(remainder));quantity++;//存储每一组转化后的汉字List<String> finalValues=new ArrayList<String>();for(int k=0;k<quantity;k++){StringBuilder finalValue=new StringBuilder();String divisor&#(k);int length=divisor.length();char[] numberCharArray&#CharArray();for(int i=0;i<length;i++){//获得当前这一组的当前数字所在位数int digNum=length-i;int num=numberCharArray[i]-'0';if(num==0){//若有多个连续的“零”,实际情况只读一个“零”if(!String().endsWith("零")){finalValue.append(numbers[num]);}}else{//没有0,则按正常情况加数字对应的的汉字及单位finalValue.append(numbers[num]).append(unit1[digNum-1]);}}//放在末尾的“零”是不读的while(finalValue.length()>0&&String().endsWith("零")){finalValue.deleteCharAt(finalValue.length()-1);}finalValues.String());}//按照上述同样的逻辑,在不同汉字组之间加单位(“”,“万”,“亿”)衔接int length2=finalValues.size();for(int j=0;j<length2;j++){result.(j)).append(unit2[length2-j-1]);if(j<length2-1&&!"".(j+1))&&!(j+1).contains("千")){result.append("零");}}String();
}

个人觉得这些代码还有待优化,若大家有其他思路欢迎讨论

本文发布于:2024-01-31 13:16:14,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170667817328792.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:汉字   转换成   数字
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23