一道java笔试题,以为很简单,结果半天都没写对!请大虾给出个正确解答
给一个阿拉伯数字
例如输入:123456789
输出:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖
我以为这个功能很简单,但是发现如果数字中间出现多个0的情况,就要有问题
贴一下我的代码,比较差劲
public static String daxie(int sum)
{
String [] n=new String[10];
n[0]="零";
n[1]="壹";
n[2]="贰";
n[3]="叁";
n[4]="肆";
n[5]="伍";
n[6]="陆";
n[7]="柒";
n[8]="捌";
n[9]="玖";
String [] d=new String[10];
d[0]="";
d[1]="";
d[2]="拾";
d[3]="佰";
d[4]="仟";
d[5]="萬";
d[6]="拾";
d[7]="佰";
d[8]="仟";
d[9]="亿";
//计算数字的位数
int wei=(int)Math.floor
(
Math.log10((double)sum)
)+1;
System.out.println(wei);
String str="";
int digit=0;
for (int i=wei;i>0;i--)
{
digit=sum/
(int)Math.pow(10.0, (double)(i-1));
str+=n[digit].toString()+d[i].toString();
sum=sum%
(int)Math.pow(10.0, (double)(i-1));
}
str= str.replace("拾零", "拾");
str= str.replace("零拾", "零");
str= str.replace("零佰", "零");
str= str.replace("零仟", "零");
str= str.replace("零萬", "萬");
for (int i=1;i<=6;i++)
str= str.replace("零零", "零");
str=str.replace("零萬", "零");
str=str.replace("零亿", "亿");
str= str.replace("零零", "零");
if (str.endsWith("零"))
{
str=str.substring(0, str.length()-1);
}
System.out.println(str);
return str;
}