描述
考试题目和要点:1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分) 2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分) 3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如¥6007.14,应写成“人民币陆仟零柒元壹角肆分“。(
知识点 字符串
运行时间限制 10M
内存限制 128
输入

输入一个doulbe数

输出

输出人民币格式

注:

下面乱码为:

人民币拾伍万壹仟壹佰贰拾壹元壹角伍分

人民币拾伍万壹仟壹佰贰拾壹元壹角伍分 
样例输入 151121.15
样例输出 人民币拾伍万壹仟壹佰贰拾壹元壹角伍分
import java.util.Arrays;
import java.util.Scanner;public class Main{public static final char[] chNumSet = "零壹贰叁肆伍陆柒捌玖".toCharArray();public static final char[] chPowSet = "分角元拾佰仟万拾佰仟亿拾佰仟万".toCharArray();public static void main(String[] args) {new Main().go();}private void go() {// 读入一个数值Scanner console = new Scanner(System.in);while (console.hasNext()) {double d = console.nextDouble();// 解析该数值为汉字形式long l = (long) (d * 100);String strRes = parse(l);System.out.println("人民币" + strRes);}}private String parse(long n) {if (n == 0) {return "零元整";}StringBuilder sb = new StringBuilder();// 将数值解析为单个数值的数组int[] nums = toNum(n);for (int i = nums.length - 1; i >= 0; i--) {sb.append(chNumSet[nums[i]]);sb.append(chPowSet[i]);}String res = sb.toString().replaceAll("零[分角拾佰仟]", "零").replaceAll("零+", "零").replaceAll("零+元", "元").replaceAll("零+万", "万").replaceAll("零+亿", "亿").replaceAll("亿万", "亿");if (res.startsWith("壹拾")) {res = res.substring(1);}if (res.endsWith("零")) {res = res.substring(0, res.length() - 1);}if (res.endsWith("元")) {res = res + "整";}return res;}private int[] toNum(long n) {int[] res = new int[0];while (n != 0) {int end = (int) (n % 10L);// 扩展数组的长度res = Arrays.copyOf(res, res.length + 1);res[res.length - 1] = end;n /= 10L;}return res;}
}

之前看的别人的解法,我觉得挺巧妙的,找不到原文出处了

华为OJ 初级:人民币转换相关推荐

  1. 华为oj初级 学英语

    描述 Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文: 如22:twenty two,123:one hundred and twenty three. 说明: 数字为正整数,长度 ...

  2. 华为oj初级 字符逆序

    描述 将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 如:输入"I am a student",输出"tneduts a ma I" ...

  3. 华为OJ 初级:合并表记录

    描述 数据表记录包含表索引和数值.请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和 函数说明:public int mergeRecord(List oriList, List rst ...

  4. 华为oj初级 求解立方根

    描述 •计算一个数字的立方根,不使用库函数 详细描述: •接口说明 原型: public static double getCubeRoot(double input) 输入:double 待求解参数 ...

  5. 华为oj初级 密码强度等级

    描述 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 二.字母: 0 分: ...

  6. 【华为OJ】【107-24点运算】

    [华为OJ][算法总篇章] [华为OJ][107-24点运算] [工程下载] 题目描述 计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*), 除(/)四种运算法则计算 ...

  7. java oj题及答案_华为OJ答案(java版)题目2

    华为OJ&答案(java版) 1. 功能:等差数列 2,5,8,11,14.... 输入:正整数N >0 输出:求等差数列前N项和 返回:转换成功返回 0 ,非法输入与异常返回-1 pu ...

  8. python中用函数货币转换代码_python将人民币转换大写的脚本代码

    代码如下: def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( format_word.__len__() – ...

  9. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

最新文章

  1. excel筛选排序从小到大_数据横向排序和筛选,Ctrl+F搭配通配符quot;*quot;,只需简单四步完成...
  2. 高精度算法(加减乘除取模(均可以处理负数))
  3. HDFS修改副本数并生效
  4. JSTL(JSP Standard Tag Library)读书笔记
  5. 汇编语言8086CPU之寄存器总结
  6. 英语学习笔记2019-11-22
  7. Android 系统(201)---Android 自定义View实战系列 :时间轴
  8. 【Clickhouse】Clickhouse 普通视图
  9. C 非标准库(conio.h)
  10. 使用REST framework
  11. ko.js循环绑定值问题(工作遇见)
  12. 个人总结之I2C总线协议
  13. Python:批量转换图片格式
  14. [Vue]开发环境搭建
  15. 打印机服务器找不到网络路径,分享0x80070035找不到网络路径的解决方法
  16. 敏友的【敏捷个人】有感(4): 发表下个人感言,指导自己的人生
  17. Markdown——入门指南
  18. 软考高级-信息系统管理师之综合测试与管理(最新版)
  19. OpenCV学习笔记(三)——图像像素(图像的最大(小)值、均值、标准差、比较运算、逻辑运算、图像二值化)
  20. 关于socket长连接的心跳包

热门文章

  1. 小案例:利用Python写个教师常用的点名软件
  2. 2017第八届蓝桥杯 08 拉马车(java)
  3. GOOGLE 真实地图模型和瓦片图下载
  4. 选择好的企业网盘考量标准有哪些
  5. (未完)第十二章:动态内存
  6. 网卡出现“Windows 仍在设置此设备的类配置。 (代码 56)“
  7. mysql取去年年初_查询年初,年末,去年年初,明年年初与年末sql语句
  8. 使用postman时变量的用法
  9. 如何使用Createjs来编写HTML5游戏(八) 通过继承扩展EaselJS中的基础元素
  10. Kaggle亚马逊比赛冠军专访:利用标签相关性来处理分类问题