• 人民币大写转换


    最近布置的Java课后作业。头一次写JAVA程序,感觉还很生疏。只实现了基本的功能,错误检查等方面统统没做╮(╯▽╰)╭
    只找了少量数据测试,可能还有问题。欢迎指出。

    //人民币大小写换算程序
    
    
    public class ParseRMB{
        static String number="零壹贰叁肆伍陆柒捌玖";
        static String unit="分角元拾佰仟万拾佰仟亿拾佰仟";
        public static void main(String[]args){
            System.out.println(parse((args[0])));
        }
        public static String parse(String money){
            int point_pos=money.indexOf(".");
            String interger_part="",decimal_part="",is_interger="";
            if (point_pos==-1)
            {
                is_interger="整";
                interger_part=money.substring(0);
            }
            else
            {
                interger_part=money.substring(0,point_pos);
                decimal_part=money.substring(point_pos+1);
            }
    
            String result="人民币";
            result+=(parseInterger(interger_part)+is_interger+parseDecimal(decimal_part));
            return result;
        }
        public static String parseInterger(String money){
            String front_part="",back_part="";
            int len=money.length();
            int unit_pos=len+1;
            boolean is_zero=false,is_m=false,is_b=false;
    
            for (int i=0;i<len;++i)
            {
                char item=money.charAt(i);
                if (item=='0')
                {
                    if (unit_pos==2)
                        back_part+=unit.charAt(unit_pos);
                    else if (unit_pos==10&&is_b)
                        back_part+=unit.charAt(10);
                    else if (unit_pos==6&&is_m)
                        back_part+=unit.charAt(6);
                    is_zero=true;
                    --unit_pos;
                    continue;
                }
                if (is_zero)
                {
                    if (unit_pos!=5&&unit_pos!=9)
                        back_part+=number.charAt(0);
                    is_zero=false;
                }
                if (unit_pos>=10)
                    is_b=true;
                else if (unit_pos>=6)
                    is_m=true;
                back_part+=number.charAt(item-'0');
                back_part+=unit.charAt(unit_pos--);
            }
            if (len<money.length())
                back_part+=unit.charAt(2);
            return front_part+back_part;
        }
        public static String parseDecimal(String money){
            String result="";
            for (int i=0;i<money.length();++i)
            {
                char item=money.charAt(i);
                if (item=='0')
                    continue;
                result=result+number.charAt(item-'0')+unit.charAt(1-i);
            }
            return result;
    
        }
    
    }
    
  • 相关阅读:
    TZOJ 1214: 数据结构练习题――线性表操作
    团体程序设计天梯赛 到底是不是太胖了
    TZOJ 数据结构实验:单链表元素插入
    Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
    Codeforces Round #511 (Div. 2)
    模板
    模板
    模板
    Codeforces Round #603 (Div. 2)
    模板
  • 原文地址:https://www.cnblogs.com/cknightx/p/7508339.html
Copyright © 2020-2023  润新知