Java实现将小写的整数金额转换成为大写的金额并进行打印输出

1.说明

输入一个整数金额,将整数金额转换成为大写的金额输出

例如:

  • 8888 -> 零佰零拾零万捌仟捌佰捌拾捌

实现思路

首先,我们可以现进行一下题目的分析:

java金额转换大写公式 hutool java金额小写转大写_算法

需求关键字:小写、转换、大写

将最终需要实现的效果与需要转换的对象作比较,经过逆推我们发现,转换后的结果想要变回被转换的对象,需要经过去单位、去零、转换这三个步骤,那么将被转换对象转换为实现结果,就只需要经过转换、补零、添加单位四步。

2.代码实现

1.将小写金额转换为大写金额
  • 录入金额
System.out.println("请输入整数金额:");
        StringBean digital = new StringBean();
        int amount;
        while (true) {
            digital.setDigital();
            amount = digital.getDigital();
            if (amount >= 0 && amount <= 9999999) {
                break;
            } else {
                System.out.println("请输入正确的金额:");
            }
        }
  • 创建一个用来存储大写字符的数组
//创建大写数组
    public static char[] getCapitals() {
        char[] CapitalsArray = {'零','壹', '贰', '叁', '肆','伍', '陆', '柒', '捌', '玖'};
        return CapitalsArray;
    }
  • 提取金额里面的每一位数字
//获取金额里的每位数字
    public static int[] getDigital(int amount) {
        int length = 0;
        int tmp = amount;
        while (true) {
            if (tmp == 0) {
                break;
            }
            tmp = tmp/ 10;
            length++;
        }
        int[] digitalArr = new int[length];
        for (int i = digitalArr.length - 1; i >= 0; i--) {
            if (amount == 0) {
                break;
            }
            //取个位
            digitalArr[i] =  amount % 10;
            //减去一位数
            amount /= 10;
        }
        return digitalArr;
    }
  • 提取出来的数字作为索引,找到大写字符数组中的对应元素并进行拼接
//将数字转换成为大写
    public static String getCap(int[] arr,char[] array){
        String ss = "";
        int count = 7 - arr.length;
        char[] Cap = new char[7];
        for (int i = 0; i < arr.length; i++) {
            Cap[i] = array[arr[i]];
            ss = ss + Cap[i];
        }
        //补零
        for (int i = 0; i < count; i++) {
            ss = '零' + ss;
        }
        return ss;
    }
2.拼接单位
  • 创建单位数组
//创建单位数组
    public static char[] getUnitArr() {
        char[] UnitArray = {'佰', '拾', '万', '仟', '佰', '拾', '元'};
        return UnitArray;
    }
  • 拼接单位进入字符串中
//拼接单位
    public static String getAddUnit(String str,char[] array){
        //遍历字符串获得值
        String ss = "";
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            ss = ss + ch + array[i];
        }
        return ss;
    }

3.完整代码

package com.java.StringTest;
//Author:@Yh

/**
 * 输入一个整数金额,将整数金额转换成为大写的金额输出
 * 例如:8888 -> 零佰零拾零万捌仟捌佰捌拾捌
 */
public class AmountJdut {
    public static void main(String[] args) {
        //键盘录入整数金额
        System.out.println("请输入整数金额:");
        StringBean digital = new StringBean();
        int amount;
        while (true) {
            digital.setDigital();
            amount = digital.getDigital();
            if (amount >= 0 && amount <= 9999999) {
                break;
            } else {
                System.out.println("请输入正确的金额:");
            }
        }
        //获取金额里的每一位数字并替换成大写,然后补齐位数后返回一个String类型的金额
        String Cap = getCap(getDigital(amount),getCapitals());
        //拼接单位
        System.out.println(getAddUnit(Cap,getUnitArr()));
    }

    //创建大写数组
    public static char[] getCapitals() {
        char[] CapitalsArray = {'零','壹', '贰', '叁', '肆','伍', '陆', '柒', '捌', '玖'};
        return CapitalsArray;
    }

    //获取金额里的每位数字
    public static int[] getDigital(int amount) {
        int length = 0;
        int tmp = amount;
        while (true) {
            if (tmp == 0) {
                break;
            }
            tmp = tmp/ 10;
            length++;
        }
        int[] digitalArr = new int[length];
        for (int i = digitalArr.length - 1; i >= 0; i--) {
            if (amount == 0) {
                break;
            }
            //取个位
            digitalArr[i] =  amount % 10;
            //减去一位数
            amount /= 10;
        }
        return digitalArr;
    }

    //将数字转换成为大写
    public static String getCap(int[] arr,char[] array){
        String ss = "";
        int count = 7 - arr.length;
        char[] Cap = new char[7];
        for (int i = 0; i < arr.length; i++) {
            Cap[i] = array[arr[i]];
            ss = ss + Cap[i];
        }
        //补零
        for (int i = 0; i < count; i++) {
            ss = '零' + ss;
        }
        return ss;
    }
    //创建单位数组
    public static char[] getUnitArr() {
        char[] UnitArray = {'佰', '拾', '万', '仟', '佰', '拾', '元'};
        return UnitArray;
    }
    //拼接单位
    public static String getAddUnit(String str,char[] array){
        //遍历字符串获得值
        String ss = "";
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            ss = ss + ch + array[i];
        }
        return ss;
    }
}

运行结果:

java金额转换大写公式 hutool java金额小写转大写_git_02