java实现将数字转换成人民币大写
Rmb.java
publicclassRmb { /** *人民币的基本信息和操作 *@authorweinee *@version1.0 */ doublenumber;//人民币的数量 privateString[]hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};//汉字计数符号 privateString[]unitArr={"","拾","佰","仟"};//汉字计数单位 privateString[]unitArrs={"万","亿","万","兆","万","亿","万","圆"};//顺序添加单位 //privateString[]unitsArr={"万","亿"};//汉字计数大单位 publicRmb(){} /** *构造器初始化人民币数量 *@param给定的初始化人民币数 */ publicRmb(doublenumber){ this.number=number; } /** *把一个浮点数分解成long型部分和小数部分字符串,把人民币换成了整数,浮点数在取小数部分时临界值有误差 *@return返回分解后的字符串数组,第一个数组元素是整数部分,第二个是小数部分字符串 */ publicString[]divideNum(){ doublenum=Math.round(number*100);//对number进行四舍五入取整 longintegerPart=(long)num;//连同小数点后两位取成整数,避免使用减法 //doubledecimalsPart=num-integerPart;//小数部分,临界时产生了误差 StringdecimalsPartStr; longb=integerPart%10;//小数点后第二位 longa=(integerPart/10)%10;//小数点后第一位 integerPart/=100; if(a==0&&b==0){ decimalsPartStr=null; }else{ decimalsPartStr=""+a+b; } returnnewString[]{String.valueOf(integerPart),decimalsPartStr}; } /** *把一个数字字符转换成汉语的人民币读法 *@return返回汉语人民币读法的字符串形式 */ publicStringtoHanStr(){ String[]results=newString[9];//用来暂时存储每四位分段后的数字字符串 String[]resultStrs=newString[9];//用来暂时存储每四位分段后转换成的人民币读法 Stringresult="";//最终的转换结果 String[]divideStr=divideNum();//得到浮点数分解成的long型部分和小数部分字符串,第一个数组元素是整数部分字符串,第二个是小数部分字符串 results[8]=divideStr[1]; for(inti=divideStr[0].length(),j=8;i>0&&j>0;i-=4,j--){ try{ results[j-1]=divideStr[0].substring(i-4,i); }catch(Exceptione){ results[j-1]=divideStr[0].substring(0,i); break; } } if(results[8]==null){ resultStrs[8]="整"; }elseif(results[8].charAt(1)=='0'){ resultStrs[8]=hanArr[results[8].charAt(0)-48]+"角";//根据ASCII码和hanArr数组吧数字改成汉语大写 }else{ resultStrs[8]=hanArr[results[8].charAt(0)-48]+"角"+hanArr[results[8].charAt(1)-48]+"分"; } for(inti=0;i<8;i++){ if(results[i]!=null){ resultStrs[i]=""; resultStrs[i]+=hanArr[results[i].charAt(0)-48]+unitArr[results[i].length()-1];//根据ASCII码和数组长度选择数的单位 for(intj=1;j<results[i].length();j++) if(results[i].charAt(j-1)=='0'&&results[i].charAt(j)!='0') resultStrs[i]+="零"+hanArr[results[i].charAt(j)-48]+unitArr[results[i].length()-1-j];//根据ASCII码和数组长度选择数的单位 elseif(results[i].charAt(j)!='0') resultStrs[i]+=hanArr[results[i].charAt(j)-48]+unitArr[results[i].length()-1-j]; } } for(inti=0;i<8;i++){ if(resultStrs[i]!=null){ result+=resultStrs[i]+unitArrs[i]; } } result+=resultStrs[8]; returnresult; } }
RmbTest.java
publicclassRmbTest { publicstaticvoidmain(String[]args) { doublel; byte[]bye=newbyte[50]; System.out.println("请输入要转换的人民币数量:"); try{ System.in.read(bye); }catch(Exceptione){} Strings=newString(bye); l=Double.parseDouble(s); Rmbr=newRmb(l); s=r.toHanStr(); System.out.println(s); } }
以上所述就是本文的全部内容了,希望对大家学习java能够有所帮助。