标签:java 并且 中国 pre ++ 传统 number 用两个 new
1.
在金融项目中,常常需要对金额进行转换,阿拉伯数字转换成中国传统形式。人民币保留到分。
如输入:16700 返回:壹万陆仟柒佰元
如输入:167.5785 返回:壹佰陆拾柒元伍角捌分
(可能用到的汉字参考:零,壹,贰,叁,肆,伍,陆,柒,捌,玖,拾,佰,仟,万,亿,兆,元,角,分.)
思路:a、用两个数组,capNumber[10]、分别存储零、壹、贰、叁、肆、伍、陆、柒、捌、玖。
unit[] 0,圆,拾,佰,仟,万,亿
举例: 5667234。
5667234/10 商566723 余4 除次数为1 capNumber[4]+unit[1]=肆圆
566723/10 商56672 余3 除次数为2 capNumber[3]+unit[2]=叁拾
56672/10 商5667 余2 除次数为3 capNumber[2]+unit[3]=贰佰
5667/10 商566 余7 除次数为4 capNumber[7]+unit[4]=肆仟
566/10 商56 余6 除次数为5 capNumber[6]+unit[5]=陆万
56/10 商5 余6 除次数为6 capNumber[6]+unit[6]=陆拾
5/10 商0 余5 除次数为7 capNumber[5]+unit[7]=伍佰
商为0,并且余数也为0时,结束
主要用到了StringBuffer 的apend 的方法, 但是 StringBuffer 的 insert(int offset, char c) 更好的解决了问题
public class RenMingBi { private static final char[] data= {‘零‘,‘壹‘,‘贰‘,‘叁‘,‘肆‘,‘伍‘,‘陆‘,‘柒‘,‘捌‘,‘玖‘}; private static final char[] units= {‘元‘,‘拾‘,‘佰‘,‘仟‘,‘万‘,‘拾‘,‘佰‘,‘仟‘,‘亿‘,‘拾‘,‘佰‘,‘仟‘}; public static void main(String[] args) { System.out.println(convert(1191)); } public static String convert(int money){ StringBuffer sb=new StringBuffer(); int unit=0; while(money!=0){ sb.insert(0, units[unit++]); int number=money%10; sb.insert(0, data[number]); money/=10; } return sb.toString(); } }
标签:java 并且 中国 pre ++ 传统 number 用两个 new
原文地址:https://www.cnblogs.com/satisfysmy/p/8975484.html