package NiukeBrush;
//Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:
//如22:twenty two,123:one hundred and twenty three。
//数字为正整数,长度不超过九位,不考虑小数,转化结果为英文小写;
//首先我们得对英语单位明确:hundred/thousand/million/billion
//我们可以得出按照3位一输出的方式进行编写
import java.util.Scanner;
public class Huawei22 {
public static void main(String[] args) {
//键盘输入
Scanner sc=new Scanner(System.in);
long num=0;
while(sc.hasNext())
{
num=sc.nextLong();
System.out.println(parse(num));
}
}
//定义一个转换为英文数
public static String parse(long num)
{
if(num<0)
{
return "error";
}
//定义一个字符串
StringBuilder sb=new StringBuilder();
//定义十亿位
int a=(int) (num/1000000000);
if(a !=0)
{
sb.append(translate(a)+" billion ");
}
//定义百万位
num=num%1000000000;
long b=num/1000000;
if(b !=0)
{
sb.append(translate(b)+" million ");
}
//定义千位
num=num%100000;
long c=num/1000;
if((int)c !=0)
{
String str2=translate(c);
sb.append(str2+" thousand ");
}
//定义百位
num=num%1000;
if(num !=0)
{
String str3=translate(num);
sb.append(str3);
}
return sb.toString().trim();
}
//将每次的三位数转为完成
public static String translate(long num)
{
//定义三个数组分别有0——9,11——19,10到90
String[] num1=new String[]{"","one","two","three","four","five","six","seven","eight","nine"};
String[] num2=new String[]{"ten","eleven","twelven","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
String[] num3=new String[]{"ten","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
StringBuilder sb=new StringBuilder();
//对这些数值进行判断
// if(n%100 !=0)
// {
// }
// 本来是这种,考虑不周,然后换了
//考虑百位
int bai=(int)num/100;
if(bai !=0)
{
sb.append(num1[bai]+" hundred");
}
//考虑十位
num=num%100;
int shi=(int)num/10;
if(shi !=0)
{
if(bai !=0)//如果百位有0的话
{
sb.append(num1[bai]+" and ");
}
if(shi==1)//这里也是一个考虑点,一定要考虑清楚
//个位是10连同个位一起翻译
{
int ge=(int)num%10;
sb.append(num2[ge]);
}
else
{
int ge=(int)num%10;
sb.append(num3[shi]+" "+num1[ge]);
}
}
else if(num%10 !=0)
{
if(bai !=0)
{
sb.append(" and ");
}
int ge=(int) num%10;
sb.append(num1[ge]);
}
return sb.toString().trim();
}
}
华为 22
最新推荐文章于 2019-02-14 08:43:38 发布