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"," ...
最新文章
- OpenCV 【一】—— OpenCV中数组指针、图像分块计算、指针取像素值与MatToEigen方法,内存对齐
- python自动化ppt_python自动化怎么操作ppt?
- 潘建伟团队进行人类首次洲际量子通信,给奥地利发去了什么?
- 为在innodb中什么主键用auto_increment效率会提高
- 要啥给啥的写作AI:新闻评论小说都能编,题材风格随便选,真假难辨,16亿参数模型已开源...
- (实用)Ubuntu Linux静态IP网络配置
- nginx error_log 错误日志配置说明
- Nodejs Web网站-请求路径分发
- IBM等创建开放虚拟化联盟对抗VMware
- php字符串从a到z排序,js怎么实现中文按照A-Z排序
- OPENCV回调函数
- 分布与并行计算—生产者消费者模型RabbitMQ(Java)
- android 瀑布流
- 滤波器开发之三:基于算数平均的阶进平滑滤波器
- 增量更新同步_干货 | Debezium实现Mysql到Elasticsearch高效实时同步
- python笔记记录(包和模块)
- postgre管理员 无法访问表_PostgreSQL常见问题处理方法
- python--之Python内存监控模块memory_profiler测试
- node+express 使用multer进行文件上传,并且以PM2启动时的错误
- input标签的type属性汇总