题目
原文:
Given an integer between 0 and 999,999, print an English phrase that describes the integer (eg, “One Thousand, Two Hundred and Thirty Four”).
译文:
给一个0到999,999的整型,打印一个英文描述的整型(如:“One Thousand, Two Hundred and Thirty Four”)
解答
首先将一位数、十几、几十、百千的英文存储进数组,然后在对1000以上的数和1000以下的进行不同的分析,代码如下:
import java.lang.StringBuilder;
class Q19_6{
public static void main(String[] args){
System.out.println(integerEnglish(94750));
}
public static String integerEnglish(int num){
StringBuilder sb=new StringBuilder();
int len=1;
while(Math.pow((double)10,(double)len)
3&&len%2==0){
len++;
}
do{
//number greater than 999
if(len>3){
tmp=(num/(int)Math.pow((double)10,(double)len-2));
// If tmp is 2 digit number and not a multiple of 10
if(tmp/10==1&&tmp%10!=0){
sb.append(numstr11[tmp%10]);
}else{
sb.append(numstr10[tmp/10]);
sb.append(numstr1[tmp%10]);
}
if(tmp>0){
sb.append(numstr100[len/2]);
}
num=num%(int)(Math.pow((double)10,(double)len-2));
len=len-2;
}else{ // Number is less than 1000
tmp=num/100;
if(tmp!=0){
sb.append(numstr1[tmp]);
sb.append(numstr100[len/2]);
}
tmp=num%100;
if(tmp/10==1&&tmp%10!=0){
sb.append(numstr11[tmp%10]);
}else{
sb.append(numstr10[tmp/10]);
sb.append(numstr1[tmp%10]);
}
len=0;
}
}while(len>0);
}
return sb.toString();
}
}
---EOF---