运行代码后,会发现1千后面还有个0...这个无语啊,想不到怎么解决,请大神指导,怎么解决,还可以用什么方法去实现这样的数呢?
/**
* 金额转换,阿拉伯数字转换成中国传统形式。
* 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
* @author Jun
* 1:定义两个字符串数组,用来存入阿拉伯数字String[] str与单位String[] str1
* 2:将传入进来的数据转为字符串类型toString()方法;因为int类型可能不句,所以进long类型
* 3:定义一个字符数组,将传入的数据进行切割,使用split()方法
* 4:创建一个符串对象,将每次得到的字符加到入这个对象中,最后在返回
* 5:进行循环判断,在对应的单位数上与入相应的单位
*
*/
public class Test10 {
public static void main(String[] args) {
System.out.println(transform(1000l));
}
public static String transform(Long it){
//定义两个字符串数组,用来存入阿拉伯数字与单位
String[] str={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String[] str1={"拾","佰","仟","萬","亿"};
//将传入进来的数据转为字符串类型
String str2=Long.toString(it);
//定义一个字符数组,将传入的数据进行切割
String[] str3=str2.split("");
//判断,如果传入进来的数字过长或没有数字,就直接返回数据有误,不在转换
if(str3.length<1||str3.length>12)
return "输入的数据有误,请重新输入 ";
//创建一个符串对象,将每次得到的字符加到入这个对象中,最后在返回
String str4="";
for(int x=0;x<str3.length;x++){
//定义一个变量,得到从最后一个数字到当前数字的这个数字是第几位
int y=str3.length-x;
int num=Integer.parseInt(str3[x]);
//当个位数上为零时,直接结束程序
if((y==1||y==5||y==9)&&num==0){
//当个,万,亿位上的数都为0时,不用写入零
}else {
str4=str4.concat(str[num]);
}
//在十位数上加上"拾"字符
if((y==2||y==6||y==10)&&num!=0){str4=str4.concat(str1[0]);}
//在千位数上加上"仟"字符
if((y==3||y==7||y==11)&&num!=0){str4=str4.concat(str1[1]);}
//在百位数上加上"佰"字符
if((y==4||y==8||y==12)&&num!=0){str4=str4.concat(str1[2]);}
//在万位数上加上"萬"字符
if(y==5){str4=str4.concat(str1[3]);}
//在亿位数上加上"亿"字符
if(y==9){str4=str4.concat(str1[4]);}
}
return str4+"圆整";
}
}
|
|