读入一个浮点数值,将其转化为金额的中文大写方式.
试验要求:
当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字.
当金额中含有连续的0时,只需要一个"零"即可.
10的表示方式.例如110--壹佰一拾元整,10---一拾元整
--------------------------------------------------------------------------------
1import java.io.*;
2class chinesemoney...{
3 private string number[]=...{"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
4 private string unit[]=...{"","拾","佰","仟"};
5 private string small[]=...{"角","分"};
6 //private string strnumber,strunit,strall;
7
8 //是否在number中
9 private boolean isinnumber(string strnumber)
10 ...{
11 boolean innumber=false;
12 for (int i=0;i<9;i++)
13 ...{
14 if (strnumber.compareto (number[i])==0) innumber=true;
15 }
16 return innumber;
17 }
18
19
20 private string splitchinesenumber(int intunit,string strint)
21 ...{
22 int l=strint.length ();
23 int j,k,zeorcounttemp=0;
24 string strunit="",strnumber="",strall="";
25
26 //判断在千万到万位 是否全为0,是的话,不返回“万”,返回“”;
27 boolean temp=false;
28 for (k=0;k 30 string strtemp=strint.substring(k,k+1); 31 int inttemp=integer.parseint(strtemp); 32 33 if (inttemp!=0) temp=true; 34 } 35 if (temp==false) 36 ...{ 37 if (intunit==5)return ""; 38 } 39 40 41 int checkk=0; 42 //正式开始转换 43 for (k=0;k 45 string strtemp=strint.substring(k,k+1); 46 int inttemp=integer.parseint(strtemp); 47 strnumber= number[inttemp]; 48 49 //j 从 50 j=l-1-k; 51 52 strunit=unit[j]; 53 54 55 //数值+单位 56 //如果数值=0,数值=“” 57 if (inttemp==0) 58 ...{ 59 // 60 if (zeorcounttemp==0) 61 ...{ 62 //单位=零 63 strunit=strunit.replace(''''拾'''',''''零''''); 64 strunit=strunit.replace(''''佰'''',''''零''''); 65 strunit=strunit.replace(''''仟'''',''''零''''); 66 } 67 else 68 ...{ 69 //多零情况下,单位=“” 70 strunit=strunit.replaceall("拾",""); 71 strunit=strunit.replaceall("佰",""); 72 strunit=strunit.replaceall("仟",""); 73 } 74 zeorcounttemp++; 75 } 76 checkk=k; 77 strall+=strnumber+strunit; 78 } 79 80 return strall; 81 } 82 83 private string onlyint(int intint) 84 ...{ 85 string strint; 86 strint=string.valueof(intint); 87 int l=strint.length(); 88 89 string strall=""; 90 //按照四位 一分隔 来计算 91 if (l>8)//亿 92 ...{ 93 strall+=this.splitchinesenumber(9,strint.substring(0,l-8))+"亿"; 94 strall+=this.splitchinesenumber(5,strint.substring(l-8,l-4)); 95 strall+=this.splitchinesenumber(1,strint.substring(l-4,l))+"元"; 96 } 97 else if (l>4)//万 98 ...{ 99 strall+=this.splitchinesenumber(5,strint.substring(0,l-4)); 100 strall+=this.splitchinesenumber(1,strint.substring(l-4,l))+"元"; 101 102 } 103 else if (l>0) 104 ...{ 105 strall+=this.splitchinesenumber(1,strint)+"元"; 106 } 107// 108// 109// 110// 111// 100101000 112 int checkl=strall.length(); 113 114 char strtemp2; 115 for (int k=1;k 117 strtemp2=strall.charat(k); 118 if (strtemp2==''''零'''') 119 ...{ 120 //判断零的前后是否有数字,无数字则删除这个零 121 string strbeforetemp=strall.substring(k-1,k); 122 string straftertemp=strall.substring(k+1,k+2); 123 if (!this.isinnumber(strbeforetemp)&&!this.isinnumber(straftertemp)) 124 ...{ 125 strbeforetemp=strall.substring(0,k); 126 straftertemp=strall.substring(k+1,checkl); 127 strall= strbeforetemp+straftertemp; 128 break; 129 } 130 131 } 132 } 133 134 return strall; 135 136 } 137 138 private string onlysmall(int intsmall) 139 ...{ 140 string strnumber,strunit,strall; 141 strnumber="";strunit="";strall=""; 142 string strsmall,strtemp; 143 strsmall=string.valueof(intsmall); 144 int i; 145 if (intsmall>=10) 146 ...{ 147 for (i=0;i 149 strtemp=string.valueof(intsmall).substring(i,i+1); 150 if (integer.parseint(strtemp)!=0) 151 ...{ 152 strnumber=number[integer.parseint(strtemp)]; 153 strunit=small[i]; 154 strall+=strnumber+strunit; 155 } 156 } 157 } 158 else 159 ...{ 160 if (intsmall!=0) 161 ...{ 162 strnumber=number[intsmall]; 163 strunit=small[1]; 164 strall+=strnumber+strunit; 165 } 166 } 167 168 return strall; 169 } 170 171 public string getchinesemoney(double number) 172 ...{ 173 //四舍五入 174 number=(number*100+0.5)/100; 175 176 string strall,strchineseint,strchinesesmall,strzheng;; 177 int intint,intsmall; 178 strchineseint="";strchinesesmall="";strzheng=""; 179 180 //整数部分 181 intint=(int)( number*100/100); 182 if (intint!=0) 183 ...{ 184 strchineseint=onlyint(intint); 185 } 186 //小数部分 187 double temp=(number-intint)*100*100/100; 188 //对小数部分四舍五入 189 intsmall=(int)(temp*100+0.5)/100; 190 if (intsmall!=0) 191 ...{ 192 strchinesesmall=onlysmall(intsmall); 193 } 194 else 195 ...{ 196 strzheng="整"; 197 } 198 strall=strchineseint+strchinesesmall+strzheng; 199 return strall; 200 } 201 public static void main(string args[]) throws ioexception 202 ...{ 203 chinesemoney cm=new chinesemoney(); 204 double money; 205 string strmoney,strchinesemoney; 206 strmoney=""; 207 //读取 208 system.out.println("输入货币(四舍五入):"); 209 bufferedreader cin = new bufferedreader(new inputstreamreader( system.in)); 210 strmoney = cin.readline(); 211 money=double.parsedouble(strmoney); 212 //money=12346.465;//double.parsedouble(strmoney); 213 strchinesemoney=cm.getchinesemoney(money); 214 system.out.println(strchinesemoney); 215 } 216}
闽公网安备 35060202000074号