金额转换,阿拉伯数字转换成中国传统形式。
例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
**@author Administrator
*/
public class Test10{
private static final char[] a = {'零','壹','贰','叄','肆','伍','陆','柒','捌','玖'};
private static final char[] b = {'仟','佰','拾',' ','仟','佰','拾',' ','仟','佰','拾','元',};
public static void convert(long money){
String s = String.valueOf( money);//将钱数转换为数字字符串
char x[] = s.toCharArray(); //将数字字符串转换为字符数组
char c[]=new char[x.length];
int len = x.length;//字符串长度
for(int j = 0; j < len; j++)
{
int f=x[j]-'0';
c[j]=a[f];
}
int r=0;//r判断是否写'零'。如:1001中第二个'零'就不写为“一千零一”
int k=0;
int m=0;//m判断是否写“万”。如:1000000000中只写为“一亿”,而110000000中写为“一亿一千万”
/*
* 所给的钱数不低于“一亿”
*/
if(x.length>=9)
{
for(;k<len-8;k++)
{
if(c[k]=='零'&&r==1)
{
if(k!=len-9)
System.out.print(c[k]);
r=0;
}
else if(c[k]!='零')
{
System.out.print(c[k]);
System.out.print(b[b.length-len+k]);
r=1;
}
}
System.out.print('亿');
r=0;
for(;k<len-4;k++)
{
if(c[k]=='零'&&r==1)
{
if(k!=len-5)
System.out.print(c[k]);
r=0;
m=1;
}
else if(c[k]!='零')
{
System.out.print(c[k]);
System.out.print(b[b.length-len+k]);
r=1;
m=1;
}
}
if(m==1)
System.out.print('万');
m=0;
for(;k<len;k++)
{
if(c[k]=='零'&&r==1)
{
if(k!=len-1)
System.out.print(c[k]);
r=0;
}
else if(c[k]!='零')
{
System.out.print(c[k]);
System.out.print(b[b.length-len+k]);
r=1;
}
}
System.out.print('圆');
if(c[len-1]=='零')
System.out.print('整');
}
/*
* 所给的钱数不低于“一万”,但是低于“一亿”
*/
else if(c.length>=5&&c.length<9)
{
for(;k<len-4;k++)
{
if(c[k]=='零'&&r==1)
{
if(k!=len-5)
System.out.print(c[k]);
r=0;
}
else if(c[k]!='零')
{
System.out.print(c[k]);
System.out.print(b[b.length-len+k]);
r=1;
}
}
System.out.print('万');
for(;k<len;k++)
{
if(c[k]=='零'&&r==1)
{
if(k!=len-1)
System.out.print(c[k]);
r=0;
}
else if(c[k]!='零')
{
System.out.print(c[k]);
System.out.print(b[b.length-len+k]);
r=1;
}
}
System.out.print('圆');
if(c[len-1]=='零')
System.out.print('整');
}
/*
* 所给的钱数低于“一万”
*/
else
{
for(;k<len;k++)
{
if(c[k]=='零'&&r==1)
{
if(k!=len-1)
System.out.print(c[k]);
r=0;
}
else if(c[k]!='零')
{
System.out.print(c[k]);
System.out.print(b[b.length-len+k]);
r=1;
}
}
System.out.print('圆');
if(c[len-1]=='零')
System.out.print('整');
}
}
public static void main(String[] args){
Test10 rmb = new Test10();
long money=101000001010L;
convert(money); //调用金额转换转换类
}
} |
|