int 转 大写 class Transform{ private final static char[] UNITCHAR1={'万','亿'}; private final static char[] UNITCHAR2={'仟','佰','拾'}; private final static char[] NUMCHAR={'玖','捌','柒','陆','伍','肆','叁','贰','壹','零'}; private final static char MINUSCHAR = '负'; private final static String ZEROSTRING = "零";
//convert to string and according to previous c to encode int code=0; for(i=0;i<3;i++){ if(c[i]!='0'){ result.append(NUMCHAR['9'-c[i]]+""+UNITCHAR2[i]); code|=1; } code<<=1; } if(c[3]!='0'){ result.append(NUMCHAR['9'-c[3]]); code|=1; }
//machining and return result switch(code){ case 1://0001 case 2://0010 case 3://0011 case 4://0100 case 6://0110 case 7://0111 result.insert(0,ZEROSTRING); return result.toString();
case 9://1001 case 10://1010 case 11://1011 result.insert(2,ZEROSTRING); return result.toString(); case 5://0101 result.insert(0,ZEROSTRING); result.insert(result.length()-1,ZEROSTRING); return result.toString(); case 13://1101 result.insert(result.length()-1,ZEROSTRING); return result.toString(); case 0://0000 return null; default://1000 1100 1110 1111 return result.toString();
class Transform{
private final static char[] UNITCHAR1={'万','亿'};
private final static char[] UNITCHAR2={'仟','佰','拾'};
private final static char[] NUMCHAR={'玖','捌','柒','陆','伍','肆','叁','贰','壹','零'};
private final static char MINUSCHAR = '负';
private final static String ZEROSTRING = "零";
public static String int2RMB(){
return "自己练练手吧";
}
public static String int2String(int arg){
if(arg>=0)return n2s(String.valueOf(arg));
else return MINUSCHAR+n2s(String.valueOf(arg).substring(1));
}
public static String int2String(String arg){
//make sure argument is valid
int i=arg.length();
if(i<1 || i>12)throw new IllegalArgumentException();
i-=1;
do{
if(arg.charAt(i)<'0' || arg.charAt(i)>'9')
throw new IllegalArgumentException();
i--;
}while(i>0);
//
if(arg.charAt(0) == '-')
return MINUSCHAR+n2s(arg.substring(1));
else if(arg.charAt(i)>='0' || arg.charAt(i)<='9')
return n2s(arg);
else
throw new IllegalArgumentException();
}
/**
*convert a positive number to string
*
*/
private static String n2s(String arg){
//
StringBuffer result = new StringBuffer();
int argLength = arg.length(),
beginIndex = 0,
endIndex,i;
String temp = "";
//
if(argLength%4==0){
endIndex = 4;
i = argLength/4;
}else{
endIndex = argLength%4;
i = argLength/4+1;
}
//transform to string
for(;i>0;i--){
temp=n42s(arg.substring(beginIndex,endIndex));
if(temp!=null){
result.append(temp);
if(i!=1)result.append(UNITCHAR1[i-2]);
}
beginIndex=endIndex;
endIndex=beginIndex+4;
}
//return result
if(result.length()==0)return ZEROSTRING;
if(result.charAt(0)==NUMCHAR[9])
return result.substring(1,result.length());
return result.toString();
}
//transform 4 num to string
private static String n42s(String arg){
int i,j;
int argLength = arg.length();
StringBuffer result = new StringBuffer();
//convert argument to formatted char array
char[] c= {'0','0','0','0'};
for(i=argLength,j=3;i>0;i--,j--){
c[j]=arg.charAt(i-1);
}
//convert to string and according to previous c to encode
int code=0;
for(i=0;i<3;i++){
if(c[i]!='0'){
result.append(NUMCHAR['9'-c[i]]+""+UNITCHAR2[i]);
code|=1;
}
code<<=1;
}
if(c[3]!='0'){
result.append(NUMCHAR['9'-c[3]]);
code|=1;
}
//machining and return result
switch(code){
case 1://0001
case 2://0010
case 3://0011
case 4://0100
case 6://0110
case 7://0111
result.insert(0,ZEROSTRING);
return result.toString();
case 9://1001
case 10://1010
case 11://1011
result.insert(2,ZEROSTRING);
return result.toString();
case 5://0101
result.insert(0,ZEROSTRING);
result.insert(result.length()-1,ZEROSTRING);
return result.toString();
case 13://1101
result.insert(result.length()-1,ZEROSTRING);
return result.toString();
case 0://0000
return null;
default://1000 1100 1110 1111
return result.toString();
}
}
}