Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >把数字转换成人民币大写的形式Java类

把数字转换成人民币大写的形式Java类

原创
作者头像
用户7999227
修改于 2021-09-22 02:41:00
修改于 2021-09-22 02:41:00
46600
代码可运行
举报
文章被收录于专栏:Java小王子Java小王子
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**

@author sunpander

把输入的数字转换成人民币大写的形式 
*/


import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ChangeNumToRMB {

String moneyStrs[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

public static void main(String[] args) {
    // TODO Auto-generated method stub
    boolean isDebug = true;
    while (isDebug) {
        int num = 0;
        String changedStr = "";
        System.out.println("请输入需要转换的金额:");
        BufferedReader br = new BufferedReader(new InputStreamReader(
                System.in));
        boolean isWrongInput = true;
        while (isWrongInput) {
            try {
                String str = br.readLine();

                num = Integer.parseInt(str);

            } catch (Exception e) {
                System.out.println("输入数字有误,必须是:0" + "到" + Integer.MAX_VALUE
                        + " 的整数");

                // TODO Auto-generated catch block
                // e.printStackTrace();
                isWrongInput = true;
                continue;
            }
            isWrongInput = false;
        }
        ChangeNumToRMB chan = new ChangeNumToRMB();
        changedStr = chan.getChangedString(num);
    }
}

public String getChangedString(int num) {

    // Money用于存放输入的金额数
    int moneyNum = num;
    String moneyStr = "";
    System.out.println("输入的钱数是:");
    if (moneyNum < 0) {
        System.out.println("数字必须大于零");
    } else if (moneyNum == 0) {
        moneyStr = "零元";
    }
    // 只有四位数,即最大9999.小于10000
    else if (moneyNum < 10000) {
        moneyStr = this.getFourNumStr(moneyNum) + "元";
    }
    // 大于一万,小于一千万
    else if (moneyNum <= 10000000)// && moneyNum>10000)
    {

        int firstFourNum, lastFourNum;
        firstFourNum = moneyNum / 10000;
        lastFourNum = moneyNum % 10000;
        String firstFourStr = this.getFourNumStr(firstFourNum);
        String lastFourStr = this.getFourNumStr(lastFourNum);
        if (!lastFourStr.contains("仟"))
            lastFourStr = "零" + lastFourStr;
        moneyStr = firstFourStr + "万" + lastFourStr + "元";
    }
    // 大于一千万.即上亿但小于最大整数
    else if (moneyNum < Integer.MAX_VALUE)// && moneyNum>10000000)
    {
        int firstFourNum, secondFourNum, lastFourNum;
        firstFourNum = moneyNum / 100000000;
        secondFourNum = (moneyNum / 10000) % 1000;
        lastFourNum = moneyNum % 10000;
        String firstFourStr = this.getFourNumStr(firstFourNum);
        String secondFourStr = this.getFourNumStr(secondFourNum);
        String lastFourStr = this.getFourNumStr(lastFourNum);
        if (!lastFourStr.contains("仟"))
            lastFourStr = "零" + lastFourStr;
        if (!secondFourStr.contains("仟"))
            secondFourStr = "零" + secondFourStr;
        moneyStr = firstFourStr + "亿" + secondFourStr + "万" + lastFourStr
                + "元";
    } else
        System.out.println("someting    is wrong");
    System.out.println(moneyStr);
    return moneyStr;
}

public String getFourNumStr(int fourNum) {
    int qian, bai, shi, ge;
    ge = fourNum % 10;
    shi = (fourNum % 100) / 10;
    bai = (fourNum % 1000) / 100;
    qian = fourNum / 1000;
    String strTemp = "";
    if (qian != 0) {

        strTemp = strTemp.concat(moneyStrs[qian] + "仟");
        strTemp = strTemp.concat(moneyStrs[bai] + "佰");
        strTemp = strTemp.concat(moneyStrs[shi] + "什");
        strTemp = strTemp.concat(moneyStrs[ge]);

        strTemp = strTemp.replace("零佰", "零");
        strTemp = strTemp.replace("零什", "零");
        strTemp = strTemp.replace("零零", "零");
        strTemp = strTemp.replace("零零", "零");

        if (strTemp.endsWith("零"))
            strTemp = strTemp.substring(0, strTemp.length() - 1);
    } else if (bai != 0) {
        strTemp = strTemp.concat(moneyStrs[bai] + "佰");
        strTemp = strTemp.concat(moneyStrs[shi] + "什");
        strTemp = strTemp.concat(moneyStrs[ge]);

        strTemp = strTemp.replace("零什", "零");
        strTemp = strTemp.replace("零零", "零");

        if (strTemp.endsWith("零"))
            strTemp = strTemp.substring(0, strTemp.length() - 1);
    } else if (shi != 0) {

        strTemp = strTemp.concat(moneyStrs[shi] + "什");
        strTemp = strTemp.concat(moneyStrs[ge]);

        if (strTemp.endsWith("零"))
            strTemp = strTemp.substring(0, strTemp.length() - 1);
    } else
        strTemp.concat(moneyStrs[ge]);
    return strTemp;
}

}</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java面试系列13
一、说出一些常用的类,包,接口,请各举5个 常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer 常用的包:java.lang java.awt java.io java.util java.sql 常用的接口:Remote List Map Document NodeList 二、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)i
Java帮帮
2018/03/19
6070
Java版 数字金额大写转换--Java学习网
需求:读入一个浮点数值,将其转化为中文金额的大写形式。如123.45,转化为:壹佰贰拾叁元肆角伍分。以下是各种情况要完善:
用户1289394
2021/01/20
1.3K0
Java版 数字金额大写转换--Java学习网
java开发_数字转换汉语中人民币的大写_完整版
======================================================
Hongten
2018/09/13
1.7K0
java开发_数字转换汉语中人民币的大写_完整版
C#数字转换成大写人民币金额
C#数字转换成大写人民币金额 如200转换成贰佰元 // 数字转换成大写金额 // 例如:(new Money(200)).ToString() == "贰佰元" namespace Skyiv.Util { using System.Text; class Test { static void Main() { for (;;) { System.Console.Write("金额: "); string s = Sys
用户7705674
2021/11/02
1.2K0
第十四届蓝桥杯集训——JavaC组第五篇——四则运算/(求余/取模)
大家都知道,四则运算也就是【+-*/】在计算机中使用这几个符号来代表,但是很多时候计算还会用到(),括号是优先级最高的符号,就跟先算乘除后算加减一样。只要带()的内容肯定是最先运算的。我们在这个规律下才能正确的计算四则运算。
红目香薰
2022/12/09
3080
第十四届蓝桥杯集训——JavaC组第五篇——四则运算/(求余/取模)
[算法题] 人民币大小写转换(阿拉伯数字和汉字转换)
本文讲述了一位技术编辑人员,在处理社区技术文章时,所经历的一些思考和总结。通过具体的工作实践,作者从提高文章阅读体验、严谨对待文章内容审核、善用工具提高工作效率等方面,进行了总结和分享。
静默虚空
2018/01/05
1.5K0
[算法题]  人民币大小写转换(阿拉伯数字和汉字转换)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 特殊回文数
        最近的一些文章都可能会很碎,写到哪里是哪里,过一阵子会具体的整理一遍,这里其它的类型题先往后排一排,因为蓝桥最后考的也就是对题目逻辑的理解能力,也就是dp分析能力了,所以就主要目标定在这里,最近的题目会很散,很多,基本上都是网罗全网的一些dp练习题进行二次训练,准备比赛的学生底子薄的先不建议看啊,当然,脑子快的例外,可以直接跳过之前的一切直接来看即可,只需要你在高中的时候数学成绩还可以那就没啥问题,其实,dp就是规律总结,我们只需要推导出对应题目的数学规律就可以直接操作,可能是一维数组,也可能是二维数组,总体来看二维数组的较多,但是如果能降为的话建议降为,因为如果降为起来你看看时间复杂度就知道咋回事了,那么在这里祝大家能无序的各种看明白,争取能帮助到大家。
红目香薰
2023/02/16
2810
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 特殊回文数
通过java程序抽取日志中的sql语句(r4笔记第4天)
今天在翻看以前的笔记时,发现自己在很早之前写过一个java程序,能够解析日志中的sql语句。 当时使用的环境是weblogic,日志目录下总是有几十上百个日志文件,有时候排查问题的时候只需要找到对应的DML语句即可。 使用linux命令固然也可以,但是解析的时候还是比较被动,不能够正确地解析出sql语句来。比如日志中出现insert的字样可能只是日志中的一段信息,不是insert语句。 这些通过linux命令来完成还是有一定的难度,记得当时问题比较多,自己也饱受这种困扰。于是写了一个java程序来。 代码如
jeanron100
2018/03/15
1.1K0
JAVA金额转换,阿拉伯数字的金额转…
     return sb.reverse().toString().replaceAll("零[拾佰仟]","零").replaceAll("零+万","万").replaceAll("零+元","元").replaceAll("零+","零");
用户2192970
2019/02/22
1.3K0
Java基础-day06-知识点回顾与练习
Java基础-day06-知识点回顾与练习 1.求和案例 实现代码: package StudentJavaSEday06; public class Demo { public static vo
Java帮帮
2018/03/19
8720
Java基础-day06-知识点回顾与练习
C#笔记:数字转大写金额
好像没有什么问题了耶。 调用 : private void textBox1_TextChanged(object sender, EventArgs e)         {             this.textBox1.TextChanged -= new EventHandler(textBox1_TextChanged);             this.textBox1.Text = GetChineseMoney.GetEngFormatNum(this.textBox1.Text)
超级大猪
2019/11/22
1.6K0
计算4位数每位数相加之和(Java、C、Python、JS多版本实现)
问题描述: 输入一个4位以内的正整数,输出各位数字之和。 解题思路: 首先根据题意,我们先求出这个数的各个数位的数字是多少,然后再让它们相加。求各个数位的数字,最常见的方法是求余运算。
向着百万年薪努力的小赵
2022/12/02
1.5K0
Java实现 将数字金额转为大写中文金额
输入数字金额参数,运行程序得到其对应的大写中文金额;例如:输入— 12.56,输出— 12.56:壹拾贰元伍角陆分
崔笑颜
2020/06/08
6.6K0
MySQL从删库到跑路_高级(二)——自定义函数
自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同。 自定义函数的两个必要条件: A、参数 B、返回值(必须有)。函数可以返回任意类型的值。
良月柒
2019/03/19
6270
MySQL自定义函数实例「建议收藏」
关于MySQL函数的基本内容,网上有很多的资料,仅在此整理一些有价值的sql实例,以方便自己阅读,见例子便知内容。
全栈程序员站长
2022/10/04
1.2K0
日常开发中,String类中常用的方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
2670
Java八大常用类(三) String类(重要,重点掌握)
import javax.sound.midi.Soundbank; import java.util.Locale; import java.util.UUID;
卢衍飞
2023/02/14
3880
人民币大写金额转换C#方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120779.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/15
7460
脚踏Java知识点
学编程的小程
2023/10/11
1820
脚踏Java知识点
2019Java面试代码与编程题
代码与编程题 135、写一个Singleton出来 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 一般Singleton模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 public class Singleton { private Singleton(){}
葆宁
2019/04/19
8680
推荐阅读
相关推荐
Java面试系列13
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验