学英语
来源:互联网 发布:淘宝销售团队 编辑:程序博客网 时间:2024/04/30 09:37
描述
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
package com.excavator;import java.util.Scanner;public class Main { public static String TranslateNumber(long number) { String[] s1= { "zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine","ten","eleven", "twelve", "thirteen", "fourteen","fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; String[] s3 = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; String s=new String(); if (number<0L|number>9999999999L) { s="error"; }else if (number<20) { //number在0~19 s=s1[(int)number]; } else if (number<100) { //number 20,30,40,...90 if (number%10==0) { s=s3[(int)number/10-2]; }else { s=TranslateNumber(number/10*10)+" "+TranslateNumber(number%10); } }else if (number<1000) { //100~999 if (number%100==0) { s=TranslateNumber(number/100)+" hundred"; }else { s=TranslateNumber(number/100)+" hundred and "+TranslateNumber(number%100); } }else if (number<1000000) { //1000~999999 if (number%1000L==0) { s=TranslateNumber(number/1000L)+" thousand"; }else { s=TranslateNumber(number/1000L)+" thousand "+TranslateNumber(number%1000L); } }else if (number<1000000000L) { //10亿以下 if (number%1000000L==0) { s=TranslateNumber(number/1000000L)+" million"; }else { s=TranslateNumber(number/1000000L)+" million "+TranslateNumber(number%1000000L); } }else if (number<=9999999999L) { //10亿到99亿 if (number%1000000000L==0) { s=TranslateNumber(number/1000000000L)+" billion"; }else { s=TranslateNumber(number/1000000000L)+" billion "+TranslateNumber(number%1000000000L); } } return s; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in); long num=scanner.nextLong(); String str=TranslateNumber(num); System.out.println(str); scanner.close(); }}
注意:
此处提倡用string数组来获得数字对应的英文单词,而不提倡用swit case语句,代码行数会非常多,可读性比较差,在答案正确之前我用的是多个if语句,而不是if else if的形式,出现了数组运行时越界异常,这是要注意的一个点。
0 0
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语!
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语
- 学英语啊学英语
- 项目11.4输入3个双精度实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输出所求出各个值
- uva 610 - Street Directions(双联通)
- iOS开发中headerView Parallax的实现方法
- 第二章 数据类型
- Android定时器
- 学英语
- UVa 227_Puzzle
- 使用dup和dup2重定向和还原 http://blog.csdn.net/kangear/article/details/24098315
- 第四章 面向对象整理
- python Selenium安装、启动设置、基本操作
- 代理
- 黑马程序员——java基础知识篇——>if语句、switch语句
- hdoj 1022 Train Problem I【栈】
- C++的const类成员函数