华为OJ——学英语
来源:互联网 发布:皇冠淘宝店铺收入 编辑:程序博客网 时间:2024/05/16 13:52
题目描述
Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:
如22:twenty two,123:one hundred and twenty three。
说明:
数字为正整数,长度不超过九位,不考虑小数,转化结果为英文小写;
输出格式为twenty two;
非法数据请返回“error”;
关键字提示: and,billion,million,thousand,hundred。
方法原型: public static String parse(long num)
输入描述:
输入一个long型整数
输出描述:
输出相应的英文写法
示例1
输入
2356
输出
two thousand three hundred and fifty six
代码实现:
package cn.c_shuang.demo42;import java.util.Scanner;/** * 学英语 * @author Cshuang * */public class Main{ public static String[] num1 = {"zero", "one", "two", "three", "four" , "five", "six", "seven", "eight", "nine"}; public static String[] num2 = {"ten","eleven","twelve","thirteen","fourteen" ,"fifteen","sixteen","seventeen","eighteen","nineteen"}; public static String[] num3 = {"twenty","thirty","forty","fifty" ,"sixty","seventy","eighty","ninety"}; public static void main(String[] args) { Scanner in = new Scanner(System.in); long num = 0; while(in.hasNext()){ num = in.nextLong(); System.out.println(parse(num)); } } public static String parse(long num){ if(num < 0 ) return "error"; StringBuilder sb = new StringBuilder(); long billion = num / 1000000000; if(billion != 0){//十亿部分 sb.append(thranslate(billion) + " billion ");//翻译十亿部分 } num = num % 1000000000; long million = num / 1000000; //百万部分 if(million != 0){ sb.append(thranslate(million) + " million ");//翻译百万部分 } num = num % 1000000; long thousand = num / 1000;//千部分 if(thousand != 0){ sb.append(thranslate(thousand) + " thousand ");//翻译千部分 } num = num % 1000;//百部分 if(num != 0){ sb.append(thranslate(num));//翻译百部分 } return sb.toString().trim();//别忘了去除字符串后面的空格 } public static String thranslate(long num){ StringBuilder sb = new StringBuilder(); long h = num / 100;//百位处理 if(h != 0){ //若不为0,翻译,否则不翻译 sb.append(num1[(int) h] + " hundred"); } num = num % 100; long k = num / 10; //十位部分 if(k != 0){ if(h != 0)//如果有百位别忘了加and sb.append(" and "); if(k == 1){//若十位为1,连同个位一起翻译 long t = num % 10; sb.append(num2[(int)t]); } else{//否则,十位和个位分别单独翻译 sb.append(num3[(int)k - 2] + " "); if(num % 10 != 0) sb.append(num1[(int)(num % 10)]); } } else if(num % 10 != 0){//如果没有十位部分,直接翻译个位部分 if(h != 0) sb.append(" and "); sb.append(num1[(int)(num % 10)]); } return sb.toString().trim();//去除字符串后面的空格 }}
阅读全文
0 0
- 华为OJ——学英语
- 华为OJ——学英语
- 华为oj 学英语
- 华为OJ:学英语
- 华为OJ(学英语)
- 华为OJ之学英语
- 【华为OJ】【092-学英语】
- 华为OJ 初级:学英语
- 华为oj初级 学英语
- 【华为oj】学英语o(>﹏<)o
- 华为OJ基础题-学英语
- 华为OJ训练之0049-170223- 学英语
- 华为oj_学英语
- 华为OJ—四则运算
- 华为在线测试--学英语
- 华为机试---学英语
- 华为OJ——合唱队
- 华为OJ——合唱队
- CentOS更改ssh端口
- JZOJ__Day 3:【NOIP普及模拟】数数(count)
- 在Visual Stdio 2015上搭建ArcGIS Engine 10.2 二次开发环境
- JAVA版List<Map>排序,按字符或数字类型排序,支持正序倒序
- USACO-Section2.1 Sorting a Three-Valued Sequence【数学公式】
- 华为OJ——学英语
- 总结TCP协议中的定时器
- mysql 索引
- LeetCode 68. Text Justification
- html的列表标签和表单
- HDU-1050 走廊搬桌子
- Mac 下配置环境变量(Mysql为例)
- 滴滴开源Android插件化框架VirtualAPK原理分析
- ADO接口操作数据库.