实现人民币的大小写转换

该练习是在《 Java开发实例大全 基础卷.pdf》中看到的题目,就借着代码参考实现。

实现思路:

  1. 保存要转换的金钱单位(chineseUnit)和金钱大写字符串(chineseValue)
  2. 将输入金额转换为字符串
  3. 将输入的金钱分为整数部分和小数部分进行处理。
  4. 对整数部分进行转换
  5. 对小数部分进行转换
  6. 拼接整数和小数部分的字符串数值
  7. 返回并输出

代码如下:

import org.omg.PortableInterceptor.Interceptor;

import java.math.BigDecimal;
import java.util.Scanner;

public class NumberConvert {
    public static void main(String[] args) {
        boolean flag = true;
        Scanner sc = new Scanner(System.in);
        ConvertChinese convertChinese = new ConvertChinese();
        System.out.println("输入金额:");
        BigDecimal number=sc.nextBigDecimal();
        System.out.println(convertChinese.getChinese(number) + "整");
    }
}
class ConvertChinese{
    private String chinese = "";
    private String decimalsChinese="";
    private String intNumber ="";
    private String decimals = "";
    String chineseUnit = "元=十=百=千=万=十=百=千=亿=十=百=千=万";
    String chineseValue = "零壹贰叁肆伍陆柒捌玖";
    // 实现金钱的数值转换
    public String getChinese(BigDecimal number) {
        String srcNumber = number + "";// 把数值换为String 型
        // 分开整数与小数
        if(srcNumber.contains(".")){
            intNumber = srcNumber.substring(0, srcNumber.indexOf("."));
            decimals = srcNumber.substring(srcNumber.indexOf(".") + 1, srcNumber.length());
            System.out.println("整数部分:" + intNumber);
            System.out.println("小数部分:" + decimals);
        }else{
            intNumber=srcNumber;
        }
        String chineseUnit1[] = chineseUnit.split("=");
        // 转换整数部分
        for (int i = 0; i < intNumber.length(); i++) {
            chinese += chineseValue.charAt(Integer.parseInt(srcNumber.charAt(i) + ""))
                    + chineseUnit1[intNumber.length() - 1 - i];
        }
        // 转换小数部分
        for (int i = 0; i < decimals.length(); i++) {
                if(i==0){
                    decimalsChinese += chineseValue.charAt(Integer.parseInt(decimals.substring(0, 1))) + "角";
                }
                if(i==1){
                    decimalsChinese+=chineseValue.charAt(Integer.parseInt(decimals.substring(1,2)))+"分";
                }
                if(i==2){
                    decimalsChinese+=chineseValue.charAt(Integer.parseInt(decimals.substring(2,3)))+"厘";
                }
        }
        chinese += decimalsChinese;
        return chinese;
    }
}

测试效果如下:

输入金额:
55.333
整数部分:55
小数部分:333
伍十伍元叁角叁分叁厘整

猜你喜欢

转载自blog.csdn.net/zuoyouzouzou/article/details/85317504