Salinan kode adalah sebagai berikut:
impor java.util.hashmap;
impor java.util.map;
Figureandchinese2util {
// cache semua angka
peta statis pribadi <karakter, karakter> peta = hashmap baru <karakter, karakter> (
10);
statis {
peta.put ('1', '1');
peta.put ('2', '2');
peta.put ('3', 'tiga');
peta.put ('4', 'si');
peta.put ('5', 'wu');
peta.put ('6', 'lu');
peta.put ('7', 'qi');
peta.put ('8', '8');
peta.put ('9', '9');
peta.put ('0', 'nol');
}
static char [] mode = char baru [] {'dia', 'bai', 'qian'};
public static void m (string sb) {
StringBuffer SBF = StringBuffer baru ();
String [] sp = sb.split ("//.");
if (sp.length == 2) {
M0 (sp [0], 0, SBF);
SBF.Append (M2 (SP [1]));
} kalau tidak
M0 (SB, 0, SBF);
SBF.Append ("Whole");
System.out.println (SBF);
}
/***
* Potong string
*
* @param SB
*/
public static void m0 (string sb, int tipe, stringBuffer sbf) {
int len = sb.length ();
int b = 0;
ketik ++;
if (len> = 4) {
b = len - 4;
sbf.insert (0, m1 (sb.substring (b), type));
M0 (SB.SubString (0, b), tipe, SBF);
} lain jika (len> 0)
sbf.insert (0, m1 (sb, type));
if ('nol' == sbf.charat (0))
sbf.deletecharat (0);
}
/***
* berurusan dengan
*
* @param SB
*/
Public Static StringBuffer M1 (String SB, Int Type) {
StringBuffer SBF = New StringBuffer (SB);
switch (type) {
Kasus 1:
SBF.Append ("Circle");
merusak;
Kasus 2:
SBF.Append ("sepuluh ribu");
merusak;
Kasus 3:
SBF.Append ("中");
merusak;
bawaan:
merusak;
}
// Mulai tugas
int b = 0;
char t = 0;
untuk (int i = sbf.length ()-2; i> = 0; i--) {
t = sbf.charat (i);
sbf.setcharat (i, map.get (t));
if (i! = 0)
sbf.insert (i, mode [b]);
B ++;
}
untuk (int i = 0; i <sbf.length (); i ++) {
t = sbf.charat (i);
if (t == 'nol') {
t = sbf.charat (i + 1);
if ('Circle'! = t && 'Million'! = t && 'Million'! = T)
sbf.deletecharat (i + 1);
kalau tidak
sbf.deletecharat (i);
if (i! = 0)
if (sbf.charat (i - 1) == 'nol') {
sbf.deletecharat (i - 1);
Saya--;
}
}
}
if (sbf.length () == 1) {
if ('circle'! = sbf.charat (0))
sbf.setLength (0);
}
mengembalikan SBF;
}
Public Static StringBuffer M2 (String DE) {
if (de.length ()> 2)
de = de.substring (0, 2);
de = de.replacefirst ("00", "");
StringBuffer SB = StringBuffer baru (DE);
if (sb.length ()> 0) {
if (sb.charat (sb.length () - 1) == '0')
SB.DeleteCharat (SB.Length () - 1);
sb.setcharat (0, map.get (sb.charat (0)));
switch (sb.length ()) {
Kasus 1:
SB.Append ("Angle");
merusak;
Kasus 2:
sb.setcharat (1, map.get (sb.charat (1)));
if (sb.charat (0)! = 'nol')
SB.Insert (1, 'Angle');
SB.Append ("skor");
merusak;
bawaan:
merusak;
}
}
mengembalikan SB;
}
public static void main (string [] args) {
String s = "44444444441.23";
String s1 = "1";
String s2 = "1000000000.01";
String s3 = "101010002.11";
MS);
M (S1);
M (S2);
M (S3);
}
}