数字翻译器,Java

来源:互联网 发布:正义不会缺席知乎 编辑:程序博客网 时间:2024/05/21 01:42

数字翻译器:

输入一个正整数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 "";}}


0 0