Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2120412
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:10:52

 1import java.io.*;
  2
class 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;k29 ...{
  
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;k44 ...{
  
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;k116 ...{
  
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;i148 ...{
  
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}
--------------------next---------------------

阅读(133) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~