java 读音_数的读法 (Java代码)
解题思路:将读入的数字从后往前数,每四个划为一组,数字长度不够4整除的前补0使之刚好被4整除
如:1234567009,即被分成了0012,3456,7009三组
其中,第一组(从左往右数)的单位是"yi"(亿),第二组的单位是"wan"(万)(第三组的单位是1,可以不包含在结果里)
然后每组分开读数,指针i初始化指向左边第一个非零数字,依次往后扫描
对于每一组,都有如下情况:
①i%4 = 0时,处在"qian"(千)位,非0时,读出数字,再追加一个"qian"
②i%4 = 1时,处在"bai"(百)位,非0时,读出数字,再追加一个"bai"
③i%4 = 2时,处在"shi"(十)位,非0时,读出数字,再追加一个"shi"
④i%4 = 3时,处在个位,如果是0,不用读出来,如果非0,读出数字;最后不要忘了,再追加该组的单位(第三组可以不加)
大体思路就是这样,还有些细节部分没细说(如连续零的处理,"yi shi"和"shi"的处理等),大家可以直接看代码部分
注意事项:
1.一般情况下,连续的零只需读出一个(特殊情况下,即使有连续的零也不需要读出,如1000003000(shi yi san qian))
2.shi还是yi shi的处理
3.末尾可以有一个多余的空格
参考代码:import java.util.Scanner;
public class T1469 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String digit[] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
while(in.hasNext()) {
String n = in.next();
int cnt = n.length()%4;
String tmp[] = {"0000","000","00","0"};
n = tmp[cnt]+n;//把输入的数字拼成4的整数倍长度
String ans = "";
int nzero = 0;//记录连续0的个数
for(int i =4-cnt;i
if(n.charAt(i) != '0') {
//遇到第一个非零数字,且有多个连续的0,且非零数字不在下一组的第一个位置,只需读出一个0
if(nzero>0 && i%4 != 0)
ans += "ling ";
nzero = 0;
if(i%4==0)//千位
ans += digit[n.charAt(i)-'0'] + " qian ";
else if(i%4==1) //百位
ans += digit[n.charAt(i)-'0'] + " bai ";
else if(i%4==2) //十位
ans += digit[n.charAt(i)-'0'] + " shi ";
else //个位
ans += digit[n.charAt(i)-'0'] + " ";
}
else
nzero++;
if(n.length() - i == 5 && nzero
ans += "wan ";
else if(n.length() - i == 9)//如果位于亿位上,需要加“yi”
ans += "yi ";
}
if(ans.indexOf("yi shi") == 0)//"yi shi"开头的话要去掉"yi "
ans = ans.substring(3,ans.length());
System.out.println(ans);
}
in.close();
}
}
java 读音_数的读法 (Java代码)相关推荐
- swift golang java,解决两数之和 (Javascript, Java, C#, Swift, Kotlin, Python,C++, Golang)
解决两数之和(Javascript, Java, C#, Swift, Kotlin, Python,C++, Golang) 给定一个整数数组,返回两个数字的索引,以便它们加起来成为一个特定的目标. ...
- java内核_测量时间:从Java到内核再到
java内核 问题陈述 当您深入研究时,即使是最基本的问题也会变得很有趣. 今天,我想深入研究一下Java时间. 我们将从Java API的最基础知识开始,然后逐步降低堆栈:通过OpenJDK源代码g ...
- 软件工程 java实现_软件工程作业——WC Java实现
项目要求: 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能 -c 返回文件字符数 -w 返回词的数目 -l 返回行数 扩展 ...
- 怎样重java初级到java中级_(续)Java进阶之路--从初级菜鸟到高级工程师
基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法. 1.一个".java"源文件中是否可以包括 ...
- 如何创建第一个java程序_创建第一个java程序
开发环境:ubuntu 10.04 + eclipse 方法一:打开eclipse编译器,选择 File->New->Java project,输入工程名称,点击finish,在工程目录中 ...
- 常用的java虚拟机_带你了解 JAVA虚拟机 面试必备
Java运行时数据区: Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途.创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有 些区域则是依赖 ...
- vs java调试_基于VSCode的Java编程语言的构建调试环境搭建指南(作业三)
1.Java编译环境的搭建(CodeRunner) CodeRunner的强大之处在于它支持许多语言,只要选好语言,就直接可以写代码,即开即用的模式.时至今日,Code Runner已经有了超过400 ...
- java 精通_你真的精通Java吗?
简历和自我介绍上经常能够读到"精通Java"这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点.不能给自己加分了.可是事实真是这样吗? 对于语言的学习,我有一 ...
- java相册_精致小巧的java相册制作方法
本文实例为大家分享了java相册制作方法,供大家参考,具体内容如下 注: 1)html上的图片是静态指定的.当更新了新的图片时必须手工更新.所以使用Servlet读取本地images中的所有图片,动态 ...
- java基准测试_星期五基准功能Java
java基准测试 让我们的产品所有者有一天变得疯狂,并要求您执行以下操作: From a set of Strings as follows : " marco_8"," ...
最新文章
- [华为机试真题][2014]62.去除重复字符并排序
- Hibernat之关系的处理多对多
- 第十届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)
- php二维数组排序 按照指定的key 对数组进行排序
- python模块实例化_python中zipfile模块实例化解析
- python编辑器中文字体倒立的_matplotlib的安装和允许中文及几种字体
- Docker学习总结(22)——Docke run命令详解
- C++ delete的三种面貌
- sql数据库快照与恢复 规则绑定
- 【PowerDesigner】PowerDesigner的下载及安装
- usb无线网卡android,台式机轻松上网:教你制作USB无线网卡
- win7 计算机定时关机脚本,电脑设置定时关机的方法 win7系统怎么设置定时关机...
- 米3换完屏信号无服务器,米3更新系统找不到云服务器
- ims系统 呈现服务器,ims系统
- java+es+nested_Elasticsearch中的关联查询。Nested类型介绍及查询原理。。
- 西门子服务器提升抱闸信号不输出,SINAMICS V90伺服抱闸接线及配置详解
- 图解CPU生产全过程——以intel CORE i7为例,展望CPU架构
- NotePad++针对一批数据批量添加双引号和逗号以及去除空格的处理技巧
- 微信订阅号签到功能_微信公众号积分签到功能怎么添加,怎么制作微信签到赚积分...
- GO语言实现P2P网络-客户端实现并且运行和测试