/*
描述
Jessi初學英語,爲了快速讀出一串數字,編寫程序將數字轉換成英文:
如22:twenty two,123:one hundred and twenty three。
說明:
數字爲正整數,長度不超過十位,不考慮小數,轉化結果爲英文小寫;
輸出格式爲twenty two;
非法數據請返回“error”;
關鍵字提示:and,billion,million,thousand,hundred。
方法原型:public static String parse(long num)
知識點 字符串,循環,函數,指針,枚舉,位運算,結構體,聯合體,文件操作,遞歸
運行時間限制 10M
內存限制 128
輸入
輸入一個long型整數
輸出
輸出相應的英文寫法
樣例輸入 2356
樣例輸出 two thousand three hundred and fifty six
*/
import java.util.Scanner;
public class Main {
public static void main(String args[])
{
Scanner sca = new Scanner(System.in);
String str = sca.next();
sca.close();
if(!str.matches("0|[1-9][0-9]*"))
{
return;
}
long number = Long.parseLong(str);
if(number > 9999999999L)
{
return;
}
System.out.println(parse(number));
}
public static String parse(long num)
{
String temp = Long.toString(num);
String english = "";
int n = 0;
if(temp.length()%3 == 0)
{
n = temp.length()/3;
}
else
{
n = temp.length()/3 + 1;
}
String[] str = new String[n];
for(int i = 0; i < n; i++)
{
if(i != n-1)
str[i] = temp.substring(temp.length()-(i+1)*3,temp.length()-i*3);
else
str[i] = temp.substring(0,temp.length()-i*3);
}
for(int i = n-1; i >= 0; i--)
{
english += word(str[i],i+1);
}
return english;
}
public static String word(String num,int symbol)
{
int number = Integer.parseInt(num);
String english = "";
String[] unit = {"","one","two","three","four","five","six","seven","eight","nine"};
String[] ten = {"","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","ninteen"};
String[] decade = {"","ten","twenty","thrity","forty","fifty","sixty","seventy","eighty","ninety"};
switch(num.length())
{
case 1:
english = unit[number];
break;
case 2:
if(number%10 != 0)
{
if(number/10 != 1)
english = decade[number/10]+" "+unit[number%10];
else
english = ten[number%10];
}
else
english = decade[number/10];
break;
case 3:
if(number/100 != 0)
{
if(number%100 != 0)
english = unit[number/100]+" hundred and "+ word(Integer.toString(number%100),1);
else
english = unit[number/100]+" hundred";
}
else
{
if(number%100 != 0)
english = "and "+word(Integer.toString(number%100),1);
}
break;
}
switch(symbol)
{
case 1:
break;
case 2:
if(number != 0)
english += " thousand ";
break;
case 3:
if(number != 0)
english += " million ";
break;
case 4:
if(number != 0)
english += " billion ";
break;
}
return english;
}
}
寫這個的時候腦細胞死了一大堆啊……