学英语

来源:互联网 发布:在哪里买淘宝小号 编辑:程序博客网 时间:2024/04/30 10:09
/*描述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);elsestr[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];elseenglish = ten[number%10];}elseenglish = 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;}}
写这个的时候脑细胞死了一大堆啊……
0 0
原创粉丝点击