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能够有所帮助。