题解 | #人民币转换#

人民币转换

https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    private static String[] NUMS={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    private static String[] POWER={"","万","亿"};
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String[] arr=in.next().split("\\.");
            char c1=arr[1].charAt(0); //角
            char c2=arr[1].charAt(1); //分
            int num=Integer.parseInt(arr[0]);
            List<String> list=new ArrayList<String>();
            if(c1!='0' && c2!='0'){ //都不为0
                int tmp1=c1-'0';
                int tmp2=c2-'0';
                list.add("分");list.add(NUMS[tmp2]);
                list.add("角");list.add(NUMS[tmp1]);
            }else if(c1=='0' && c2!='0'){
                int tmp2=c2-'0';
                list.add("分");list.add(NUMS[tmp2]);     
            }else if(c1!='0' && c2=='0'){
                int tmp1=c1-'0';
                list.add("角");list.add(NUMS[tmp1]);
            }else{
                list.add("整");
            }
            if(num>0){
                list.add("元");
            }
            int power=1;
            while(num!=0){
                if(power!=1){
                    list.add(POWER[power-1]);
                }
                int num0=num%10000; //取低4位
                int num1=num%1000;//取低3位
                int num2=num%100; //取低2位
                if(num2!=0){ //十位 个位不都是0
                    int single=num2%10; //个位
                    if(single!=0){ //有个位
                        list.add(NUMS[single]);
                    }
                    int ten=num2/10; //十位
                    if(ten!=0){ //有十位
                        list.add("拾");
                        if(ten!=1){
                            list.add(NUMS[ten]);
                        }                       
                    }
                    if(num1/100!=0){ //有百位
                        if(ten==0){
                            list.add("零");
                        }
                        int hund=num1/100; 
                        list.add("佰");
                        list.add(NUMS[hund]);
                    }                    
                }else{
                    if(num1/100!=0){ //有百位
                        int hund=num1/100; 
                        list.add("佰");
                        list.add(NUMS[hund]);
                    }
                }
                if(num0/1000!=0){//有千位
                    int ths=num0/1000;
                    if(num1/100==0 && num1%100!=0){//百位为0 
                        list.add("零");
                    }
                    list.add("仟");
                    list.add(NUMS[ths]);
                }
                num /= 10000;
                power++;
            }
            list.add("人民币");
            StringBuilder sb=new StringBuilder();
            for(int i=list.size()-1; i>=0; i--){
                sb.append(list.get(i));
            }
            System.out.println(sb.toString());
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务