人名币金额阿拉伯数字转化为中国传统形式JAVA实现

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();
	}
	 
}

 

posted @ 2018-05-01 01:57  雪落无痕1  阅读(290)  评论(0编辑  收藏  举报