題意:
讀入一個(gè)浮點(diǎn)數(shù)值,將其轉(zhuǎn)化為中文金額的大寫方式.
試驗(yàn)要求:
當(dāng)金額為整數(shù)時(shí),只表示整數(shù)部分,省略小數(shù)部分,并添加"整"字.
當(dāng)金額中含有連續(xù)的0時(shí),只需要一個(gè)"零"即可.
10的表示方式.例如110--壹佰一拾元整,10---一拾元整
? 1
import
java.io.
*
;
? 2
class
chineseMoney
...
{
? 3
???
private
String number[]
=
...
{
""
,
"
壹
"
,
"
貳
"
,
"
叁
"
,
"
肆
"
,
"
伍
"
,
"
陸
"
,
"
柒
"
,
"
捌
"
,
"
玖
"
}
;
? 4
???
private
String unit[]
=
...
{
"
元
"
,
"
拾
"
,
"
佰
"
,
"
仟
"
,
"
萬(wàn)
"
,
"
拾
"
,
"
佰
"
,
"
仟
"
,
"
億
"
,
"
拾
"
,
"
佰
"
}
;
? 5
???
private
String small[]
=
...
{
"
角
"
,
"
分
"
}
;
? 6
???
private
String strNumber,strUnit,strAll;
? 7
? 8
???
private
String onlyInt(
int
intInt)
? 9
???
...
{
10
??????? String strInt;
11
??????? strInt
=
String.valueOf(intInt);
12
??????? strNumber
=
""
;strUnit
=
""
;strAll
=
""
;
13
???????
int
l
=
strInt.length ();
14
???????
int
j,k,zeorCount;
15
??????? zeorCount
=
0
;
16
???????
for
(k
=
0
;k
<
l;k
++
)
17
???????
...
{
18
??????????? String strTemp
=
strInt.substring(k,k
+
1
);
19
???????????
int
intTemp
=
Integer.parseInt(strTemp);
20
??????????? strNumber
=
number[intTemp];
21
??????????? j
=
l
-
1
-
k;
22
??????????? strUnit
=
unit[j];
23
???????????
if
(intTemp
==
0
)
24
???????????
...
{
25
???????????????
if
(zeorCount
==
0
)
26
???????????????
...
{
27
??????????????????? strUnit
=
strUnit.replace(
'
拾
'
,
'
零
'
);
28
??????????????????? strUnit
=
strUnit.replace(
'
佰
'
,
'
零
'
);
29
??????????????????? strUnit
=
strUnit.replace(
'
仟
'
,
'
零
'
);
30
??????????????????? strUnit
=
strUnit.replace(
'
萬(wàn)
'
,
'
零
'
);???
31
??????????????? }
32
???????????????
else
33
???????????????
...
{
34
??????????????????? strUnit
=
strUnit.replaceAll(
"
拾
"
,
""
);
35
??????????????????? strUnit
=
strUnit.replaceAll(
"
佰
"
,
""
);
36
??????????????????? strUnit
=
strUnit.replaceAll(
"
仟
"
,
""
);
37
??????????????????? strUnit
=
strUnit.replaceAll(
"
萬(wàn)
"
,
""
);???????
38
??????????????? }
39
??????????????? zeorCount
++
;
40
??????????? }
???????
41
??????????? strAll
+=
strNumber
+
strUnit;
42
??????? }
43
???????
return
strAll;
44
???
45
??? }
46
???
47
???
private
String onlySmall(
int
intSmall)
48
???
...
{
49
???????
50
??????? strNumber
=
""
;strUnit
=
""
;strAll
=
""
;
51
??????? String strSmall,strTemp;
52
??????? strSmall
=
String.valueOf(intSmall);
53
???????
int
i;
54
???????
if
(intSmall
>=
10
)
55
???????
...
{
56
???????????
for
(i
=
0
;i
<
strSmall.length();i
++
)
57
???????????
...
{
58
??????????????? strTemp
=
String.valueOf(intSmall).substring(i,i
+
1
);
59
???????????????
if
(Integer.parseInt(strTemp)
!=
0
)
60
???????????????
...
{
61
??????????????????? strNumber
=
number[Integer.parseInt(strTemp)];
62
??????????????????? strUnit
=
small[i];???
63
??????????????????? strAll
+=
strNumber
+
strUnit;
64
??????????????? }
65
??????????? }
66
??????? }
67
???????
else
68
???????
...
{
69
???????????
if
(intSmall
!=
0
)
70
???????????
...
{
71
??????????????? strNumber
=
number[intSmall];
72
??????????????? strUnit
=
small[
1
];???
73
??????????????? strAll
+=
strNumber
+
strUnit;
74
??????????? }
75
??????? }
76
77
???????
return
strAll;
78
??? }
79
???
80
???
public
String getChineseMoney(
double
number)
81
???
...
{
82
???????
//
四舍五入
83
??????? number
=
(number
*
100
+
0.5
)
/
100
;
84
???????
85
??????? String strAll,strChineseInt,strChineseSmall,strZheng;;
86
???????
int
intInt,intSmall;
87
??????? strChineseInt
=
""
;strChineseSmall
=
""
;strZheng
=
""
;
88
???????
89
???????
//
整數(shù)部分
90
??????? intInt
=
(
int
)( number
*
100
/
100
);
91
???????
if
(intInt
!=
0
)
92
???????
...
{
93
??????????? strChineseInt
=
onlyInt(intInt);
94
??????? }
95
???????
//
小數(shù)部分
96
???????
double
temp
=
(number
-
intInt)
*
100
*
100
/
100
;
97
???????
//
對(duì)小數(shù)部分四舍五入
98
??????? intSmall
=
(
int
)(temp
*
100
+
0.5
)
/
100
;
99
???????
if
(intSmall
!=
0
)
100
???????
...
{
101
??????????? strChineseSmall
=
onlySmall(intSmall);
102
??????? }
103
???????
else
104
???????
...
{
105
??????????? strZheng
=
"
整
"
;
106
??????? }
107
??????? strAll
=
strChineseInt
+
strChineseSmall
+
strZheng;
108
???????
return
strAll;
109
??? }
110
???
public
static
void
main(String args[])
throws
IOException
111
???
...
{
112
??????? chineseMoney cm
=
new
chineseMoney();
113
???????
double
money;
114
??????? String strMoney,strChineseMoney;
115
??????? strMoney
=
""
;
116
???????
//
讀取
117
??????? System.out.println(
"
輸入貨幣(四舍五入):
"
);
118
??????? BufferedReader cin
=
new
BufferedReader(
new
InputStreamReader( System.in));
119
??????? strMoney
=
cin.readLine();
120
??????? money
=
Double.parseDouble(strMoney);
121
??????? strChineseMoney
=
cm.getChineseMoney(money);
122
??????? System.out.println(strChineseMoney);
123
??? }
124
}
?
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=641419