人民币金额大写
来源:互联网 发布:财经日历数据接口 编辑:程序博客网 时间:2024/04/28 01:22
在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序。 本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误的情况)。
比如,用户输入:35201,程序输出:叁万伍仟贰佰零壹 用户输入:30201,程序输出:叁万零贰佰零壹 用户输入:30001,程序输出:叁万零壹 用户输入:31000,程序输出:叁万壹仟
用户输入:120023201,程序输出:壹亿贰仟零贰万叁仟贰佰零壹 用户输入:120020001,程序输出:壹亿贰仟零贰万零壹 用户输入:100000001,程序输出:壹亿零壹
比如,用户输入:35201,程序输出:叁万伍仟贰佰零壹 用户输入:30201,程序输出:叁万零贰佰零壹 用户输入:30001,程序输出:叁万零壹 用户输入:31000,程序输出:叁万壹仟
用户输入:120023201,程序输出:壹亿贰仟零贰万叁仟贰佰零壹 用户输入:120020001,程序输出:壹亿贰仟零贰万零壹 用户输入:100000001,程序输出:壹亿零壹
可以看到,在万后满千位,则不加零,否则要补零,但不要出现类似“零零”的情况。 在亿后满千万位,则不加零,否则要补零,但整个“万档”没有数字时,“万”字省去。
package MyTest;import java.util.ArrayList;import java.util.List;import java.util.Stack;public class MyTest {public static void main(String[] args) throws Exception {String[] multipleText = { "", "万", "亿" };String number = "121000";int length = number.length();List<String> list=new ArrayList<String>();while (length > 0) {if (length <= 4)list.add(number.substring(0, length));elselist.add(number.substring(length - 4, length));length -= 4;}Stack<String> stack=new Stack<String>();for (int i = 0; i < list.size(); i++) {String temp=NumberToChinese(list.get(i));if(!"".equals(temp))stack.push(temp+multipleText[i]);}while(!stack.isEmpty()){System.out.print(stack.pop());}}/** * @param number * 数字字符串 * @return 汉字字符串 */public static String NumberToChinese(String number) {// 用于统计0个数int zeroCount = 0;//String[] numberText = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };String[] numberText = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };String[] multipleText = { "仟", "佰", "拾", "" };int digitNumber = number.length();String temp = "";for (int i = 0; i < digitNumber; i++) {// 如果当前数字不为0if ((number.charAt(i) - '0') != 0) {String temp1 = "";// number为两位数并且number的十位必须是1if (digitNumber == 2 && (number.charAt(i) - '0') == 1) {if (i == 1)temp1 = numberText[(number.charAt(i) - '0')];} else {// 将数字转换为汉字temp1 = numberText[(number.charAt(i) - '0')];}// 获取当前汉字的倍数String temp2 = multipleText[(multipleText.length - digitNumber) + i];// 将汉字数字与倍数合并temp += temp1 + temp2;// 遇到非零数字重置为0zeroCount = 0;} else {// 遇到零数字则统计if (zeroCount == 0) {temp += "零";zeroCount++;}}}// digitNumber!=1表示总长度为1位就不给删除if (zeroCount != 0 && digitNumber != 1) {// 如果最后末尾有零,则将汉字零删除return temp.substring(0, temp.lastIndexOf("零"));} else {return temp;}}}
0 0
- 人民币大写金额函数
- 人民币大写金额转换
- 人民币金额大写
- 人民币金额大写
- 人民币金额大写
- 人民币金额大写
- 人民币金额大写
- C#人民币金额大写
- 人民币金额大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币中文大写转金额
- 人民币小写金额转大写
- C#转换人民币大写金额
- C#人民币金额大写转换
- 蓝桥杯之《人民币金额大写》
- C# 人民币金额转大写
- 中文版Chrome浏览器不支持12px以下字体的解决方案
- centos 挂载exfat
- CentOS安装吐槽
- c语言数据类型、运算符、表达式
- POJ2485 Highways【Prim】
- 人民币金额大写
- c语言中的结构体
- 会说话,减少奋斗30年
- 矩阵论学习笔记3
- 微信支付 开发一日 遇到的问题与解决 部分解决方案为转载
- POJ 3783 Balls 动态规划
- [Bestcoder] Round #27 1001、1002 | HDU 5162、5163
- CSS3 transition transform 动画实现天气预报显示
- STL MAP