코드 사본은 다음과 같습니다.
java.util.hashmap import;
java.util.map import;
공개 클래스 피어안의 2util {
// 모든 숫자를 캐시합니다
비공개 정적지도 <문자, 문자> 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 [] { 'she', 'bai', 'Qian'};
public static void m (string sb) {
StringBuffer sbf = new StringBuffer ();
문자열 [] 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 (문자열 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), type);
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 (문자열 sb, int type) {
StringBuffer SBF = New StringBuffer (SB);
스위치 (유형) {
case 1:
sbf.append ( "Circle");
부서지다;
case 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, 모드 [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.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));
스위치 (sb.length ()) {
case 1:
sb.append ( "각도");
부서지다;
case 2:
sb.setcharat (1, map.get (sb.charat (1));
if (sb.charat (0)! = 'Zero')
sb.insert (1, '각도');
sb.append ( "점수");
부서지다;
기본:
부서지다;
}
}
반환 SB;
}
public static void main (String [] args) {
문자열 s = "44444444441.23";
문자열 s1 = "1";
문자열 s2 = "10000000000.01";
문자열 s3 = "101010002.11";
m (s);
M (S1);
M (S2);
M (S3);
}
}