/*
四四分组,每一组都对应同一个规则
最关键的规则就是什么时候后面跟零?当前位的后一位为零且后面在当前位等级数范围内不能都为零即1000,如果后一位是
0,那么判断1后面 3 位都不能为 0 的情况下才可以跟 零。
当所得到的数四四分组 组数大于2时,低位组 要判断是否还有高位组,如果还有高位组且本组第一位为 0 时 前面要加零
如:10010030 分为 1001 0030 那么0030 这一组要除了能够得到 参拾外 还要判断自己前面是否要跟 零
总之解决这个问题就要解决这前后跟零的问题。
*/
class MoneyUtil{
private String numberString;
private final String[] chineseDigits={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private final String[] units={"","拾","佰","仟"};
public MoneyUtil(){
}
public MoneyUtil(String numberString){
this.numberString=numberString;
}
private String fourWise(String str){
int len=str.length();
String result="";
for(int i=0;i
int place=Integer.parseInt(String.valueOf(str.charAt(i)));
String unit=units[len-i-1];
if(place!=0){
if(i+1
result=result+chineseDigits[place]+unit+"零";
}else
result=result+chineseDigits[place]+unit;
}
}
return result;
}
private int countZero(String str){
int len=str.length();
int count=0;
for(int i=0;i
if(str.charAt(i)=='0')
count+=1;
}
return count;
}
public String toDaXie(){
String result="";
String str=numberString;
int oldLen=str.length();
for(int i=0;i<4-oldLen%4;i++){//不能用可变的量length()作为判断依据。
str="0"+str;
}
int len=str.length()/4;
String[] parts=new String[len];
for(int i=0;i
parts[i]=str.substring(str.length()-(i+1)*4,str.length()-(i+1)*4+4);
}
for(int i=0;i
String fourWise=fourWise(parts[i]);
if(Integer.parseInt(parts[i])==0){//如果这一组全为0,则要加上一个零。如100001200读作:壹亿零壹仟贰佰
result="零"+result;
}else if(i+1
switch(i){
case 0:result="零"+fourWise+result;break;
case 1:result="零"+fourWise+"万"+result;break;
case 2:result="零"+fourWise+"亿"+result;break;
case 3:result="零"+fourWise+"万"+result;break;
case 4:result="零"+fourWise+"兆"+result;break;
}
}else{
switch(i){
case 0:result=fourWise+result;break;
case 1:result=fourWise+"万"+result;break;
case 2:result=fourWise+"亿"+result;break;
case 3:result=fourWise+"万"+result;break;
case 4:result=fourWise+"兆"+result;break;
}}}return result;}}