人民币转换

题目描述

考试题目和要点:

1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分)

2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分)

3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如¥6007.14,应写成“人民币陆仟零柒元壹角肆分“。(

输入描述:

输入一个double数

输出描述:

输出人民币格式

输入例子:
151121.15
输出例子:
人民币拾伍万壹仟壹佰贰拾壹元壹角伍分
 1 import java.util.*;
 2
 3 public class Main{
 4     public static String[] num1 = {" ","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
 5     public static void main(String[] agrs){
 6         Scanner sc = new Scanner(System.in);
 7         while(sc.hasNext()){
 8             double n = sc.nextDouble();
 9             long num = (long)(100*(n+0.001));//0.29 不是精确的0.29 可能是0.28999999999 直接乘以100 可能得到28 +0.001
10             //System.out.println(num);
11             System.out.println(parse(num));
12          }
13     }
14     public static String parse(long num){
15         if(num < 0)
16             return "error";
17         StringBuilder sb = new StringBuilder("人民币");
18         //亿部分
19         long yi = num / 10000000000l; //Main45.java:20: 错误: 过大的整数: 10000000000 long yi = num / 10000000000; 加l
20         if(yi != 0){
21             sb.append(thranslate(yi) + "亿");
22         }
23         //万部分
24         num = num % 10000000000l;
25         long wan = num / 1000000;
26         if(wan != 0){
27             sb.append(thranslate(wan) + "万");
28         }
29         //千部分
30         num = num % 1000000;
31         long qian = num / 100000;
32         if(qian != 0){
33             sb.append(thranslate(qian) + "千");
34         }
35         //百部分
36         num = num % 100000;
37         long bai = num / 10000;
38         if(bai != 0){
39             sb.append(thranslate(bai)+ "佰");
40         }
41         num = num % 10000;
42         long shi = num / 1000;
43         if(shi != 0){
44             if(shi==1)
45             sb.append("拾");//注意:13只说拾叁不说壹拾叁
46             else
47             sb.append(num1[(int)shi] + "拾");
48         }
49         num = num % 1000;
50         long yuan = num / 100;
51         if(yuan != 0){
52             sb.append(thranslate(yuan) + "元");
53         }
54         num = num % 100;
55         long jiao = num / 10;
56         if(jiao != 0){
57             sb.append(thranslate(jiao) + "角");
58         }
59         num = num % 10;
60         long fen = num;
61         if(num % 10 != 0){
62             sb.append(thranslate(fen) + "分");
63         }
64         if(jiao == 0&&num % 10 == 0)
65             sb.append("整");
66         return sb.toString().trim();
67     }
68     public static String thranslate(long num){
69         StringBuilder sb = new StringBuilder();
70         long q = num / 1000;
71         if(q != 0){
72             sb.append(num1[(int)q] + "千");
73         }
74         num = num % 1000;
75         long h = num / 100;
76         if(h != 0){
77             sb.append(num1[(int)h] + "佰");
78         }
79         num = num % 100;
80         long s = num / 10;
81         if(s != 0){
82             if(s==1)
83             sb.append("拾");
84             else
85             sb.append(num1[(int)s] + "拾");
86         }
87         num = num % 10;
88         if(num != 0){
89             sb.append(num1[(int)num]);
90         }
91         return sb.toString();
92     }
93
94 }

对零的处理还有待思考改善。。花了2个小时才做成这样

时间: 2024-10-02 11:37:51

人民币转换的相关文章

我的java学习の流程控制作业の人民币转换

import java.util.*; class 人民币转换作业{/***** 先判断是否为零,不是零正常for循环:新+unit+result: 为零则先判断是否消单位(只要不是万和亿都消单位), 再判断是否消零(上一个数是非零的数,且单位不是万和亿,正常输出), (上一个数是零,或单位是万和亿,零省去)(第一个零要消去) 否则正常输出:  ******/public static void main(String[] args){//需要转换的数:int a=210540080; //空字

人民币

人民币转换 1 package t0107; 2 3 public class Money { 4 5 private static final char[] data = new char[]{ 6 '零','壹','贰','叁','肆','伍','陆','柒','捌','玖', 7 }; 8 private static char[] units = new char[]{ 9 '元','拾','佰','仟','万','拾','佰','仟','亿', 10 }; 11 /** 12 * @p

类型转换的那些事

  首先类型转换:将1个类型的变量的值 拿出来 有的时候经过处理,有的时候不经过处理  赋值给另外的1个类型的变量 的过程.  类型转换分:1.自动类型转换 2. 强制类型转换 3.Parse转换 4.Convert转换等  为什么要类型转换? 因为类型不一致系统给你报错,就像我们要去国外,老外不直接收RMB呀,那我们首先要去银行把人民币转换成老外认得的头像吧!  先来说说自动类型转换 1.0 什么是自动类型转换?     在数据类型兼容的情况下, 我们可以将1个小范围的变量的值 直接 赋值给

【C++探索之旅】第一部分第七课:函数效应,分而治之

内容简介 1.第一部分第七课:函数效应,分而治之 2.第一部分第八课预告:传值引用,文件源头 函数效应,分而治之 上一课<[C++探索之旅]第一部分第六课:控制流程,随心所至>中,我们学习了条件语句和循环语句. 这两种语句也算是算法的核心了.在更早的课程中,我们学习了变量.这些都是所有编程语言的必备元素. 这一课我们又要学习一个几乎所有编程语言都有的极重要元素: 函数. C++的所有程序都或多或少用到函数,到目前为止,你其实也已经用了好多次了,不过你可能只缘身在此山中,还云深不知处. 函数的功

【C语言探索之旅】 第一部分第九课:函数

内容简介 1.课程大纲 2.第一部分第九课:函数 3.第一部分第十课预告: 练习题+习作 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动

NJUPT JAVA语言 综合图形界面程序设计

一. 实验目的和要求 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法. 通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. 实验内容: 设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果. 附:程序使用的人民币外汇牌价参考 每100元美元等值买入人民币数:619.72 (2015/5/23 数据) 二.实验代码 package think; import java.awt.Color; import java

Javascript&#183;常见错误及用法习惯(新手入门)

数据类型 1.字符串 如果想用双引号来包住一个本身就包含双引号的字符串,就必须用反斜杠对字符串中的双引号进行转义: var height = "about 5' 10\" tall"; 值得注意的是反斜杠并不是字符串的一部分.您可以去验证一下: alert(height); 2.数组与对象 新手可能会用到关联数组,这种用法不是一个好习惯.这时应该使用通用的对象(Object) 什么是关联数组? 1 var a = array(3); 2 a[0]="my"

指令系统的发展经历

指令系统的发展经历了从简单到复杂的演变过程.早在20世纪50-60年代,计算机大多数采用分立元件的晶体管或电子管组成,其体积庞大,价格也很昂贵,因此计算机的硬件结构比较简单,所支持的指令系统也只有十几至几十条最基本的指令,而且寻址方式简单. 到60年代中期,随着集成电路的出现,计算机的功耗.体积.价格等不断下降,硬件功能不断增强,指令系统也越来越丰富. 1 package Com.TableText; 2 import java.util.ArrayList; 3 import java.uti

DDD实战与进阶 - 值对象

目录 DDD实战与进阶 - 值对象 概述 何为值对象 怎么运用值对象 来看一个例子 值对象的持久化 总结 DDD实战与进阶 - 值对象 概述 作为领域驱动设计战术模式中最为核心的一个部分-值对象.一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一.但是在学习过程中,大家会因为受到传统开发模式的影响,往往很难去运用值对象这一概念,以及在对值对象进行持久化时感到非常的迷惑.本篇文章会从值对象的概念出发,解释什么是值对象以及怎么运用值对象,并且给出相应的代码片段(本教程的代码片段都使用