Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
问题描述
当输入12 3456 7009时,会给出相应的念法:
十二亿三千四百五十六万七千零九
用汉语拼音表示为
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。
样例输入
1234567009
样例输出
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
这道题自我感觉就是一个时间的问题,不是很难,但可能很费时间
package 蓝桥杯VIP;
import java.util.Arrays;
import java.util.Scanner;
public class 数的读法 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
readToChinese(scanner.nextInt());
}
public static void readToChinese(int n){
if(n < 10000){
thousandSay(n);
System.out.println();
}else if(n < 100000000){
int n1 = n / 10000;
int n2 = n % 10000;
if(n2 == 0){
thousandSay(n1);
System.out.print("wan");
System.out.println();
}else {
thousandSay(n1);
System.out.print("wan ");
thousandSay(n2);
System.out.println();
}
}else if(n < 2000000000){
int n1 = n / 100000000;
int n2 = (n/10000) % 10000;
int n3 = n % 10000;
thousandSay(n1);
System.out.print("yi ");
thousandSay(n2);
System.out.print("wan ");
thousandSay(n3);
System.out.println();
}else if(n == 2000000000){
System.out.println("er yi");
System.out.println();
}else {
System.out.println("输入错误,正确范围是(0-20 0000 0000)");
}
}
public static void thousandSay(int n){
String[] arr = new String[]{"ling ","yi ","er ","san ","si ","wu ","liu ","qi ","ba ","jiu "};
String shi = "shi ";
String bai = "bai ";
String qian = "qian ";
int num = n;
if(n < 10){
System.out.print(arr[n]);
}else if(n < 100){
int a = n / 10;
int b = n % 10;
if(b == 0){
System.out.print(arr[a]+shi);
}else if(a == 1){
System.out.print(shi+arr[b]);
} else {
System.out.print(arr[a]+shi+arr[b]);
}
}
else if(n < 1000){
int a = n / 100;
int b = (n / 10) % 10;
int c = n % 10;
if(b == 0 && c == 0){
System.out.print(arr[a]+bai);
}else if(b == 0 & c != 0){
System.out.print(arr[a]+bai+arr[0]+arr[c]);
}else if(b != 0 && c == 0){
System.out.print(arr[a]+bai+arr[b]+shi);
}else {
System.out.print(arr[a]+bai+arr[b]+shi+arr[c]);
}
}else if(n < 10000){
int a = n / 1000; //表示千位
int b = (n / 100) % 10; //表示百位
int c = (n / 10) % 10; //表示十位
int d = n % 10; //表示个位
if(b == c && c == d && d == 0){
System.out.print(arr[a]+qian);
}else if (b == 0 && c != 0 & d != 0){
System.out.print(arr[a]+qian+arr[0]+arr[c]+shi+arr[d]);
}else if(b == 0 && c == 0 && d != 0){
System.out.print(arr[a]+qian+arr[0]+arr[d]);
}else if (b == 0 && c != 0 && d == 0){
System.out.print(arr[a]+qian+arr[0]+arr[c]+shi);
}else if(c == 0 && d == 0){
System.out.print(arr[a]+qian+arr[b]+bai);
}else if (c == 0 && d != 0){
System.out.print(arr[a]+qian+arr[b]+bai+arr[0]+arr[d]);
}else if(d == 0){
System.out.print(arr[a]+qian+arr[b]+bai+arr[c]+shi);
}else {
System.out.print(arr[a]+qian+arr[b]+bai+arr[c]+shi+arr[d]);
}
}
}
}
Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法的更多相关文章
- 【蓝桥杯】非VIP基础题型训练17题 (Python 题解)
NO.I 基础题型 基础练习汇总 时间 题目 解析 21.12.24 早上 1. A+B问题 练习系统的适应 21.12.24 早上 2. 数组排序 输入输出排序 21.12.24 早上 3. 十六进 ...
- 问题 1936: [蓝桥杯][算法提高VIP]最大乘积
问题 1936: [蓝桥杯][算法提高VIP]最大乘积 时间限制: 1Sec 内存限制: 128MB 提交: 77 解决: 16 题目描述 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? ...
- Java实现第九届蓝桥杯全球变暖
全球变暖 题目描述 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ...
- java面试宝典(蓝桥学院)
Java面试宝典(蓝桥学院) 回答技巧 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的学生在笔试/面试时更好地赢得好的结果.由于这套试题涉及的范围 ...
- 20145213 《Java程序设计》实验四 Android开发基础
20145213 <Java程序设计>实验四 Android开发基础 说在前面的话 不同以往实验,对于这次实验具体内容我是比较茫然的.因为点我,打开实验四的链接居然能飘出一股熟悉的味道,这 ...
- 20145225《Java程序设计》 实验四 Android开发基础
20145225<Java程序设计> 实验四 Android开发基础 实验报告 实验内容 安装Android Studio 运行安卓AVD模拟器 使用安卓运行出虚拟手机并显示HelloWo ...
- 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结.所以下面给大家分享一下我的经验: 微信公众号是什么? 官网的介绍:再小的个 ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- 老李分享:《Java Performance》笔记1——性能分析基础 1
老李分享:<Java Performance>笔记1——性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ...
随机推荐
- vim(vi)的常用快捷键
Vim 简介 vim是什么?听说它是编辑器之神!神一样的存在,而我却经常用上下左右箭头来移动光标,实在是有点对不起它,所以想着稍微学学一点神的技能吧! 一. vim的三种模式 Nomal mode:默 ...
- Windows系统目录
文件功能 编辑 ├—WINDOWS │ ├—system32(存放Windows的系统文件和硬件驱动程序) │ │ ├—config(用户配置信息和密码信息) │ │ │ └—systemprofil ...
- vue面试常遇到的面试题
最近面试了好几家公司,总结一下经常被问到的面试题. 首先呢,一开始先来一个自我介绍,没啥好说的. 接下来就是考验你vue技术的问题了 一些常见的面试题 vue的生命周期 一共有八个阶段,分别为创建前后 ...
- 简单的Java实现Netty进行通信
使用Java搭建一个简单的Netty通信例子 看过dubbo源码的同学应该都清楚,使用dubbo协议的底层通信是使用的netty进行交互,而最近看了dubbo的Netty部分后,自己写了个简单的Net ...
- vue 自己写组件。
最近在网上看到很多大神都有写博客的习惯,坚持写博客不但可以为自己的平时的学习做好记录积累 无意之中也学还能帮助到一些其他的朋友所以今天我也注册一个账号记录一下学习的点滴!当然本人能力实在有限写出的文章 ...
- Ubuntu16.04 flask + nginx + uWSGI 部署
前言 又有段时间没写博客了,最近一直在写外包项目,都没啥空余时间.这几天花了不少时间做项目部署,也看了不少教程,这里就记录下整个过程,也方便以后要做类似部署的时候不用再查来查去了. flask + u ...
- Sentinel源码解析一(流程总览)
引言 Sentinel作为ali开源的一款轻量级流控框架,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定性.相比于Hystrix,Sentinel的设计更加简 ...
- Tensorflow从0到1(一)之如何安装Tensorflow(Windows和Linux两种版本)
现在越来越多的人工智能和机器学习以及深度学习,强化学习出现了,然后自己也对这个产生了点兴趣,特别的进行了一点点学习,就通过这篇文章来简单介绍一下,关于如何搭建Tensorflow以及如何进行使用.建议 ...
- webpack指南(三)缓存
缓存 把 /dist 目录中的内容部署到服务器上,客户端(通常是浏览器)就能够访问网站此服务器的网站及其资源.而通过网络获取资源是比较耗时的,这就是为什么浏览器要使用缓存这种技术.可以通过命中缓存,以 ...
- Python的逻辑结构和函数
1.Python中的逻辑结构 ①顺序执行 ②选择执行: if...elif...else... 没有switch..case.. ③循环执行: for...in... while... 没有do..w ...