文章作者 100test 发表时间 2007:04:06 22:06:51
来源 100Test.Com百考试题网
读入一个浮点数值,将其转化为金额的中文大写方式.
试验要求:
当金额为整数时,只表示整数部分,省略小数部分,并添加"整"字.
当金额中含有连续的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}
相关文章
JAVA基础应用:日期时间选择控件(代码)
spring在MVC层解决JPA的缓迟加载问题
基于java的图片文件格式转换和线性缩放
applet调用javacomm20-win32API注意事项
JAVA应用:浮点数转化为大写中文金额
Java基础:看看流行的和过时的鼠标事件
初学者如何开发出一个高质量J2EE系统
JAVA基础应用:如何实现希尔排序算法
基于NetBeans比较JavaEE5平台和J2EE1.4
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛