zoukankan      html  css  js  c++  java
  • java实现人民币金额大写

    在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序。
    本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误的情况)。
    比如,用户输入:35201,程序输出:叁万伍仟贰佰零壹
    用户输入:30201,程序输出:叁万零贰佰零壹
    用户输入:30001,程序输出:叁万零壹
    用户输入:31000,程序输出:叁万壹仟
    用户输入:120023201,程序输出:壹亿贰仟零贰万叁仟贰佰零壹
    用户输入:120020001,程序输出:壹亿贰仟零贰万零壹
    用户输入:100000001,程序输出:壹亿零壹
    可以看到,在万后满千位,则不加零,否则要补零,但不要出现类似“零零”的情况。
    在亿后满千万位,则不加零,否则要补零,但整个“万档”没有数字时,“万”字省去。

    package com.liu.ex7;
    
    import java.util.Scanner;
    
    
    public class Main {
        public static String[] A = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
        
        public String getPart(String temp) {
            int num = Integer.valueOf(temp);   //除去字符串前0
            temp = num + "";
            String result = "";
            int len = temp.length();
            for(int i = 0, j = len;i < len;i++, j--) {
                int number = temp.charAt(i) - '0';
                if(number == 0) {
                    //0在个位
                    if(i == len - 1)
                        break;
                    //0在十位
                    if(len == 3 && i == 1) {
                        int number1 = temp.charAt(i + 1) - '0';
                        if(number1 == 0)
                            break;
                        else
                            result = result + A[0];
                    }
                    //0在十位
                    if(len == 4 && i == 2) {
                        int number1 = temp.charAt(i + 1) - '0';
                        if(number1 == 0)
                            break;
                        else
                            result = result + A[0];
                    }
                    //0在百位
                    if(len == 4 && i == 1) {
                        int number1 = temp.charAt(i + 1) - '0';
                        int number2 = temp.charAt(i + 2) - '0';
                        if(number1 != 0)
                            result = result + A[0];
                        else if(number1 == 0 && number2 != 0) {
                            i = i + 1;
                            j = j - 1;
                            result = result + A[0];
                        } else if(number1 == 0 && number2 == 0) {
                            break;
                        }
                    }
                }
                if(number != 0) {
                    result = result + A[number];
                    if(j == 4)
                        result = result + "仟";
                    else if(j == 3)
                        result = result + "佰";
                    else if(j == 2)
                        result = result + "拾";
                }
            }
            return result;
        }
        
        public void getResult(int n) {
            String result = "";
            String temp = "" + n;
            int len = temp.length();
            if(len >= 9) {
                String temp1 = temp.substring(len - 4, len);
                String temp2 = temp.substring(len - 8, len - 4);
                String temp3 = temp.substring(0, len - 8);
                result = result + getPart(temp3) + "亿";
                if(Integer.valueOf(temp2) < 1000 && Integer.valueOf(temp2) != 0)
                    result = result + A[0];
                if(Integer.valueOf(temp2) == 0)
                    result = result + A[0];
                else
                    result = result + getPart(temp2) + "万";
                if(Integer.valueOf(temp1) != 0) {
                    if(Integer.valueOf(temp2) != 0 && Integer.valueOf(temp1) < 1000)
                        result = result + A[0];
                    result = result + getPart(temp1);
                }
            } else if(len >= 5 && len < 9) {
                String temp1 = temp.substring(len - 4, len);
                String temp2 = temp.substring(0, len - 4);
                result = result + getPart(temp2) + "万";
                if(Integer.valueOf(temp1) != 0) {
                    if(Integer.valueOf(temp1) < 1000)
                        result = result + A[0];
                    result = result + getPart(temp1);
                }
            } else if(len > 0 && len < 5) {
                result = result + getPart(temp);
            }
            System.out.println(result);
            return;
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            test.getResult(n);
        }
    }
    
  • 相关阅读:
    1、线性DP 198. 打家劫舍
    1、线性DP 354. 俄罗斯套娃信封问题
    127. 单词接龙
    1. 线性DP 887. 鸡蛋掉落 (DP+二分)
    200. 岛屿数量
    1. 线性DP 152. 乘积最大子数组
    1. 线性DP 53. 最大子序和.
    1. 线性DP 120. 三角形最小路径和
    如何在RHEL 8上安装Python 3
    在Ubuntu 20.04 LTS Focal Fossa上安装Drupal
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078191.html
Copyright © 2011-2022 走看看