Java实现数字金额转中文大写金额的完整过程

 更新时间:2025年04月15日 09:30:50   作者:InsightFuture  
本程序实现将用户输入的整数金额(0~9999999)转换为符合财务规范的中文大写金额,并自动添加单位符号(如“万”、“仟”、“佰”等),例如输入 1234,输出 壹仟贰佰叁拾肆元,文中通过代码示例讲解的非常详细,需要的朋友可以参考下

一、功能概述

本程序实现将用户输入的整数金额(0~9999999)转换为符合财务规范的中文大写金额,并自动添加单位符号(如“万”、“仟”、“佰”等)。例如输入 1234,输出 壹仟贰佰叁拾肆元

二、核心代码解析

1. 输入验证模块

int inputMoney;
while (true) {
    System.out.println("请输入金额:");
    int temp = sc.nextInt();
    if (temp >= 0 && temp <= 9999999) {
        inputMoney = temp;
        break;
    } else {
        System.out.println("输入的金额有误,请重新输入!");
    }
}
  • 功能:确保输入金额在合法范围(0~9,999,999)
  • 亮点:使用无限循环强制用户输入合法值
  • 风险点:未处理非数字输入(如输入字母会崩溃)

2. 数字拆分与大写转换

String result = "";
while(true) {
    int temp = inputMoney % 10;   // 取末位数字
    inputMoney = inputMoney / 10; 
    String resultString = toBigChange(temp); // 转换为大写
    result = resultString + result; // 逆序拼接
    if (inputMoney == 0) break;
}
  • 算法逻辑
    • 通过取余操作 %10 获取数字的末位
    • 通过整除 /10 移除已处理的末位
    • 逆序拼接保证数字顺序正确

3. 补零处理(七位对齐)

int len = 7 - result.length();
for(int i = 0; i < len; i++) {
    result = "零" + result;
}
  • 示例:输入 123 → 补零为 零零零壹贰叁
  • 作用:为后续添加单位符号提供统一长度基础

4. 添加金额单位

public static String addSymbolHandle(String string) {
    String[] symbolArray = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
    String resultString = "";
    for(int i = 0; i < string.length(); i++) {
        char s = string.charAt(i);
        resultString += s + symbolArray[i];
    }
    return resultString;
}

单位对照表

索引 0   1    2    3    4    5    6
    佰  拾   万   仟   佰   拾   元
  • 输出示例零佰零拾零万壹仟贰佰叁拾肆元

三、关键方法说明

1. 数字转大写方法

public static String toBigChange(int number) {
    String[] bigArray = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    return bigArray[number];
}
  • 映射规则:直接通过数组下标转换
  • 注意事项:依赖输入验证确保 number 在0~9之间

四、运行示例演示

输入1234处理流程

  • 拆分数字:1 2 3 4
  • 转大写:壹 贰 叁 肆
  • 补零:零零零壹贰叁肆
  • 加单位:零佰零拾零万壹仟贰佰叁拾肆元

最终输出

零零零壹贰叁肆 
零佰零拾零万壹仟贰佰叁拾肆元 

五、代码优化建议

1. 输入验证增强

try {
    int temp = sc.nextInt();
} catch (InputMismatchException e) {
    System.out.println("请输入数字!");
    sc.nextLine(); // 清除非数字输入
    continue;
}

2. 单位顺序调整

更符合中文习惯的单位顺序:

String[] symbolArray = {"佰", "拾", "万", "仟", "佰", "拾", "元"};

3. 补零逻辑优化

// 使用String.format格式化补零
result = String.format("%07d", Integer.parseInt(result));

六、扩展思考

  • 如何支持更大金额(如亿级)?

    • 增加单位数组:{"亿", "仟", "佰", "拾", "万", ...}
  • 如何处理小数金额(元角分)?

    • 拆分整数和小数部分分别处理
    • 补充单位:"角", "分"
  • 如何去除多余零值

    • 正则替换:result.replaceAll("零[仟佰拾]", "零")

七、源码

package com.insightfuture.string;

import java.util.Scanner;

public class StringTest6 {
    public static void main(String[] MakeItPossible) {
        // 整数拆解
        Scanner sc = new Scanner(System.in);
        int inputMoney;
        while (true) {
            System.out.println("请输入金额:");
            int temp = sc.nextInt();
            if (temp >= 0 && temp <= 9999999) {
                inputMoney = temp;
                break;
            } else {
                System.out.println("输入的金额有误,请重新输入!");
            }
        }

        // 将金额拆分后调用方转成大写金额,然后拼接处理
        String result = "";
        while(true) {
            int temp = inputMoney % 10;   // 得到最左边的一个数
            inputMoney = inputMoney / 10; // 删除最左边的一个数
            // 将这个数传给函数得到这个数的大写形式
            String resultString = toBigChange(temp);
            // 将返回的大写字母凭借,注意顺序(拆是从右到左,拼接则是从左到右)
            result = resultString + result;
            if (inputMoney == 0) {
                // 处理的数据到 0 了, 表示拆完了,直接终止!
                break;
            }
        }
        // 七位金额数值,不足左边补零
        int len = 7 - result.length();
        for(int i = 0; i < len; i++) {
            result = "零" + result;
        }
        System.out.println(result + " ");
        System.out.println(addSymbolHandle(result) + " ");
    }

    /**
     * toBigChange方法:根据传入的数字返回该数字的大写
     * @param number
     * @return String
     */
    public static String toBigChange(int number) {
        String[] bigArray = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        return bigArray[number];
    }

    /**
     * addSymbolHandle方法:根据金额插入单位
     * @param string
     * @return String
     */
    public static String addSymbolHandle(String string) {
        String[] symbolArray = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
        String resultString = "";
        for(int i = 0; i < string.length(); i++) {
            // 1. 将字符串才分成 字符
            char s = string.charAt(i);
            // 2. 将字符拼接金额单位,累加后赋值给新的字符串存储
            resultString = resultString + s + symbolArray[i];
        }
        return resultString;
    }
}

八、总结

通过这个案例,我们掌握了:

  • 数字拆解与逆序拼接的技巧
  • 中文金额单位的添加规则
  • 输入验证的基本实现方法

以上就是Java实现从数字到中文大写金额的完整过程的详细内容,更多关于Java数字转中文大写金额的资料请关注脚本之家其它相关文章!

相关文章

  • Eclipse引用XSD实现XML配置文件提示标签的方法

    Eclipse引用XSD实现XML配置文件提示标签的方法

    今天小编就为大家分享一篇关于Eclipse引用XSD实现XML配置文件提示标签的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 浅谈线程的几种可用状态

    浅谈线程的几种可用状态

    下面小编就为大家带来一篇浅谈线程的几种可用状态。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java将Word转换成PDF的常用用法

    Java将Word转换成PDF的常用用法

    Java开发人员在处理文档转换时,常常需要将Word或Excel文档转换为PDF格式,以便于更好地保持格式一致性、便于分发和打印,这篇文章主要给大家介绍了关于Java将Word转换成PDF的常用用法,需要的朋友可以参考下
    2024-08-08
  • Java程序连接数据库的常用的类和接口介绍

    Java程序连接数据库的常用的类和接口介绍

    这篇文章主要介绍了Java程序连接数据库的常用的类和接口,包括Connection类和Statement类等,需要的朋友可以参考下
    2015-10-10
  • SpringBoot登录验证码实现过程详解

    SpringBoot登录验证码实现过程详解

    这篇文章主要介绍了SpringBoot登录验证码实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Mybatis中OGNL表达式的具体使用

    Mybatis中OGNL表达式的具体使用

    OGNL是一种简洁、灵活的表达式语言,本文就来介绍一下OGNL的概念以及在Mybatis中的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • MyBatis-Plus Generator配置详解

    MyBatis-Plus Generator配置详解

    这篇文章主要介绍了MyBatis-Plus Generator配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Spring框架学习之Spring @Autowired实现自动装配的代码

    Spring框架学习之Spring @Autowired实现自动装配的代码

    自动装配就是说,你不用手动实现bean之间的组合关系,只要使用了@Autowired注解,程序就会自动的注入这个需要的bean,前提是你的Spring容器有这个bean,这篇文章主要介绍了Spring @Autowired实现自动装配,需要的朋友可以参考下
    2021-12-12
  • Java如何使用jar命令打包

    Java如何使用jar命令打包

    把多个文件打包成一个压缩包——这个压缩包和WinZip的压缩格式是一样的,区别在于jar压缩的文件默认多一个META-INF的文件夹,该文件夹里包含一个MANIFEST.MF的文件,本文给大家介绍Java如何使用jar命令打包,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • java获取网络图片上传到OSS的方法

    java获取网络图片上传到OSS的方法

    这篇文章主要为大家详细介绍了java获取网络图片上传到OSS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10

最新评论