数字翻译器:
输入一个正整数N,输出它的英文表达。
例如,输入1,输出one;
输入12,输出twelve;
输入135,输出one hundred thirty five。
请编程实现。
与 Tom教授 染色体位置 念法 类似 http://blog.csdn.net/foolsong/article/details/16897005
import java.util.Scanner;
/**
* 数字翻译器。输入一个正整数N,输出它的英文表达。
* 例如,输入1,输出one;输入12,输出twelve;
* 输入135,输出one hundred thirty five。
* 请编程实现。
*
*/
public class TranslationOfFigures {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String s=input.nextLine(); //输入的数字
input.close();
int length=s.length(); //数字的长度
int jB=0; //三个为一组,组的数量
String[] jiBie={"","thousand","million","billion"};
String read="";
if(length%3==0){
jB=length/3;
}else{
jB=length/3+1;
}
String[] num=new String[jB]; //每三个 分成一组
for (int i = 0; i < num.length; i++) {
num[num.length-1-i]=s.substring(s.length()-3*(i+1)<0?
0:s.length()-3*(i+1), s.length()-3*i);
read=getStringSan(num[num.length-1-i])+" "+jiBie[i]+" "+read;
}
System.out.println(read);
}
public static String getStringSan(String s){
String[] num1={"one","two","three","four","five",
"six","seven","eight", "nine","ten" };
String[] num2={"eleven","twelve","thirteen","fourteen",
"fifteen","sixteen","seventeen","eighteen","nineteen"};
String[] num3={"twenty","thirty","forty","fifty",
"sixty","seventy","eighty","ninety"};
if(s.length()==1){
return num1[Integer.valueOf(s)-1];
}
if(s.length()==2){
int i=Integer.valueOf(s.substring(0, 1));
int j=Integer.valueOf(s.substring(1, 2));
if(i==1){
return num2[j-1];
}
else{
return num3[j-2]+" "+num1[i-1];
}
}
if(s.length()==3){
int i=Integer.valueOf(s.substring(0, 1));
int j=Integer.valueOf(s.substring(1, 2));
int k=Integer.valueOf(s.substring(2, 3));
if(i==0){
if(j==1){
return num2[j-1];
}
else{
return num3[j-2]+" "+num1[k-1];
}
}
else{
if(j==1){
return num1[i-1]+" "+"hundred"+" "+num2[k-1];
}
else{
return num1[i-1]+" "+"hundred"+" "+num3[j-2]+" "+num1[k-1];
}
}
}
return "";
}
}