Кода -копия выглядит следующим образом:
импортировать java.util.hashmap;
импортировать java.util.map;
открытый класс FigureAndchinese2util {
// кэшировать все числа
Частная статическая карта <символ, символ> map = new Hashmap <символ, символ> (
10);
статический {
map.put ('1', '1');
map.put ('2', '2');
map.put ('3', 'three');
map.put ('4', 'si');
map.put ('5', 'wu');
map.put ('6', 'lu');
map.put ('7', 'qi');
map.put ('8', '8');
map.put ('9', '9');
map.put ('0', 'Zero');
}
static char [] mode = new char [] {'ne', 'bai', 'qian'};
public static void m (String sb) {
StringBuffer sbf = new StringBuffer ();
String [] sp = sb.split ("//");
if (sp.length == 2) {
M0 (SP [0], 0, SBF);
sbf.append (m2 (sp [1]));
} еще
M0 (SB, 0, SBF);
SBF.Append («целый»);
System.out.println (SBF);
}
/***
* Вырезать струну
*
* @param sb
*/
public static void M0 (String SB, Int Type, StringBuffer SBF) {
int len = sb.length ();
int b = 0;
Тип ++;
if (len> = 4) {
b = len - 4;
sbf.insert (0, m1 (sb.substring (b), тип));
M0 (SB.Substring (0, B), тип, SBF);
} else if (len> 0)
sbf.insert (0, m1 (sb, type));
if ('Zero' == sbf.charat (0))
sbf.deletecharat (0);
}
/***
* иметь дело с
*
* @param sb
*/
Public Static StringBuffer M1 (String SB, Int Type) {
StringBuffer sbf = new StringBuffer (SB);
Switch (type) {
Случай 1:
sbf.append ("Circle");
перерыв;
Случай 2:
sbf.append ("десять тысяч");
перерыв;
Случай 3:
sbf.append ("中");
перерыв;
по умолчанию:
перерыв;
}
// Начало назначения
int b = 0;
char t = 0;
for (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 ++;
}
for (int i = 0; i <sbf.length (); i ++) {
t = sbf.charat (i);
if (t == 'Zero') {
t = sbf.charat (i + 1);
if ('circle'! = t && 'million'! = t && 'million'! = t)
sbf.deleteCharat (i + 1);
еще
sbf.deletecharat (i);
if (i! = 0)
if (sbf.charat (i - 1) == 'Zero') {
sbf.deletecharat (i - 1);
я--;
}
}
}
if (sbf.length () == 1) {
if ('circle'! = sbf.charat (0))
SBF.SetLength (0);
}
вернуть SBF;
}
Public Static StringBuffer M2 (String de) {
if (de.length ()> 2)
de = de.substring (0, 2);
de = de.replacefirst ("00", "");
StringBuffer SB = new StringBuffer (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 ()) {
Случай 1:
SB.Append («Угол»);
перерыв;
Случай 2:
sb.setcharat (1, map.get (sb.charat (1)));
if (sb.charat (0)! = 'Zero')
sb.insert (1, 'angle');
SB.Append («Счет»);
перерыв;
по умолчанию:
перерыв;
}
}
вернуть SB;
}
public static void main (string [] args) {
String S = "444444444441.23";
Строка S1 = "1";
Строка S2 = "1000000000.01";
Строка S3 = "101010002.11";
РС);
М (S1);
М (S2);
М (S3);
}
}