public class chineseToNumber {
private final String[] charNumChar={"零","一","二","三","四","五","六","七","八","九"};
//数字对中文每四个零对应一个节权
private final String[] chanUnitSection={"","万","亿","万亿"};
private final String[] chnUnitChar={"","十","百","千"};
public static void main(String[] args) {
System.out.println(new chineseToNumber().NumberToChinese(1510));
}
/**
* 对阿拉伯数字分节,并确定节权名称
* number对10000取模可以得到一个节权
* 若千位为0,则中文补零,利用needZero这个变量来做
*/
private String NumberToChinese(int number){
int pos=0;
String strIns;
StringBuffer str=new StringBuffer();
boolean needZero=false;
if(number==0) return charNumChar[0];
while(number>0){
int section=number%10000;
if(needZero){
//若千位为零,补零
str.insert(0, charNumChar[0]);
}
strIns=SectionToChinese(section);
strIns+=(section!=0)?chanUnitSection[pos]:chanUnitSection[0];
str.insert(0, strIns);
//如果千位为零,则补零
needZero=(section>0)&&(section<1000);
number=number/10000;
pos++;
}
return str.toString();
}
/**
*将一个节的数字转换成中文
*/
private String SectionToChinese(int number){
StringBuffer str=new StringBuffer();
int pos=0;
boolean zero=true;
String strIns;
while(number>0){
int v=number%10;
if(v==0){
if(!zero){
//如果该位为零并且上一位不为零,则补零
str.insert(0, charNumChar[0]);
}
}
else{
zero=false;//至少这位数字不是零
strIns=charNumChar[v]+chnUnitChar[pos];
str.insert(0, strIns);
}
pos++;
number/=10;
}
return str.toString();
}
}
Java操作数字转换中文
最新推荐文章于 2023-08-18 17:20:30 发布