在日常生活中,我們經常會將阿拉伯數字轉化為中文大寫的情況:"零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖", "拾", "佰", "仟", "萬", "億",因此自己就編寫一個類,實現該功能的轉化。
實現過程:
對于這個問題的實現,我們首先把數字按四位一個拆開(符合我們讀數字的習慣),然后對這四位數,做出他的讀法,具體代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
private static String getNumberStr1000 ( int num) { if (num > 9999 || num < 0 ) { return "" ; } int q = num / 1000 ; int b = (num / 100 ) % 10 ; int s = (num / 10 ) % 10 ; int g = num % 10 ; StringBuffer sb = new StringBuffer(); //千 if (q > 0 ) { sb.append(NUMBER1[q]); sb.append(NUMBER2[ 3 ]); } //百 if (b > 0 ) { sb.append(NUMBER1[b]); sb.append(NUMBER2[ 2 ]); } else { if (q != 0 ) { sb.append(NUMBER2[ 0 ]); } } //十 if (s > 0 ) { sb.append(NUMBER1[s]); sb.append(NUMBER2[ 1 ]); } else { if (b != 0 ) { sb.append(NUMBER2[ 0 ]); } } //個 if (g > 0 ) { sb.append(NUMBER1[g]); } return sb.toString(); } |
下面我們只需要在編寫一個方法,實現每個四位數的讀法以及對應的單位即可,具體代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public static String getNumberStr( int num) { if (num < 0 ) { return "" ; } if (num == 0 ) { return NUMBER1[ 0 ]; } int split = 10000 ; int y = num / (split * split); int w = (num / split) % split; int g = num % split; StringBuffer sb = new StringBuffer(); //億 if (y > 0 ) { sb.append(getNumberStr1000(y)); sb.append(NUMBER2[ 5 ]); } //萬 if (w > 999 ) { sb.append(getNumberStr1000(w)); sb.append(NUMBER2[ 4 ]); } else { if (w > 0 ) { if (y != 0 ) { sb.append(NUMBER2[ 0 ]); } sb.append(getNumberStr1000(w)); sb.append(NUMBER2[ 4 ]); } } //萬以下 if (g > 0 ) { if (w != 0 ) { if (g > 999 ) { sb.append(getNumberStr1000(g)); } else { sb.append(NUMBER2[ 0 ]); sb.append(getNumberStr1000(g)); } } else { if (y != 0 ) { sb.append(NUMBER2[ 0 ]); } sb.append(getNumberStr1000(g)); } } return sb.toString(); } |
完整源代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
/** *@Description: */ package com.lulei.util; public class NumberUtil { private static String[] NUMBER1 = { "零" , "壹" , "貳" , "叁" , "肆" , "伍" , "陸" , "柒" , "捌" , "玖" }; private static String[] NUMBER2 = { "零" , "拾" , "佰" , "仟" , "萬" , "億" }; /** * @param num * @return * @Author:lulei * @Description:將數字轉化為大寫 */ public static String getNumberStr( int num) { if (num < 0 ) { return "" ; } if (num == 0 ) { return NUMBER1[ 0 ]; } int split = 10000 ; int y = num / (split * split); int w = (num / split) % split; int g = num % split; StringBuffer sb = new StringBuffer(); //億 if (y > 0 ) { sb.append(getNumberStr1000(y)); sb.append(NUMBER2[ 5 ]); } //萬 if (w > 999 ) { sb.append(getNumberStr1000(w)); sb.append(NUMBER2[ 4 ]); } else { if (w > 0 ) { if (y != 0 ) { sb.append(NUMBER2[ 0 ]); } sb.append(getNumberStr1000(w)); sb.append(NUMBER2[ 4 ]); } } //萬以下 if (g > 0 ) { if (w != 0 ) { if (g > 999 ) { sb.append(getNumberStr1000(g)); } else { sb.append(NUMBER2[ 0 ]); sb.append(getNumberStr1000(g)); } } else { if (y != 0 ) { sb.append(NUMBER2[ 0 ]); } sb.append(getNumberStr1000(g)); } } return sb.toString(); } /** * @param num * @return * @Description:對萬以下的數字進行大小寫轉化 */ private static String getNumberStr1000 ( int num) { if (num > 9999 || num < 0 ) { return "" ; } int q = num / 1000 ; int b = (num / 100 ) % 10 ; int s = (num / 10 ) % 10 ; int g = num % 10 ; StringBuffer sb = new StringBuffer(); //千 if (q > 0 ) { sb.append(NUMBER1[q]); sb.append(NUMBER2[ 3 ]); } //百 if (b > 0 ) { sb.append(NUMBER1[b]); sb.append(NUMBER2[ 2 ]); } else { if (q != 0 ) { sb.append(NUMBER2[ 0 ]); } } //十 if (s > 0 ) { sb.append(NUMBER1[s]); sb.append(NUMBER2[ 1 ]); } else { if (b != 0 ) { sb.append(NUMBER2[ 0 ]); } } //個 if (g > 0 ) { sb.append(NUMBER1[g]); } return sb.toString(); } public static void main(String[] args) { // TODO Auto-generated method stub int i = 1 ; System.out.println(i + "--" + NumberUtil.getNumberStr(i)); i = 1001 ; System.out.println(i + "--" + NumberUtil.getNumberStr(i)); i = 100101 ; System.out.println(i + "--" + NumberUtil.getNumberStr(i)); i = 10100101 ; System.out.println(i + "--" + NumberUtil.getNumberStr(i)); i = 1234567890 ; System.out.println(i + "--" + NumberUtil.getNumberStr(i)); } } |
測試運行結果:
希望本文所述對大家學習java程序設計有所幫助。