题解 | #人民币转换#

人民币转换

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    static char[]zh = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖','拾'};
    static char[]more = {'万','亿'};
    static char[]letter = {'佰','仟'};
    static char[]litter = {'角','分'};
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.next();
        String[]arr = input.split("\\.");
        StringBuilder sb = new StringBuilder();
        
        sb.append("人民币");
        String zheng = arr[0];
        int len = zheng.length();
        if(zheng.charAt(0)!='0') {
            int j = len%4;
            if(j==0) {
                j=4;
            }
            for(int i=0;i<len;) {
                String tmp = zheng.substring(i, j);
                String tmpRes = readZ(tmp);
                sb.append(tmpRes);
                if(len-j+1>=8) {
                    sb.append(more[1]);//亿
                } else if(len-j+1>=4) {
                    sb.append(more[0]);//万
                }
                i=j;
                j+=4;//每4位数算一次
            }

            sb.append("元");
        }
        if(arr[1].equals("00")) {
            sb.append("整");
        } else {
            char c1=arr[1].charAt(0);
            char c2=arr[1].charAt(1);
            if(c1!='0') {
                sb.append(zh[c1-'0']).append(litter[0]);
            }
            if(c2!='0') {
                sb.append(zh[c2-'0']).append(litter[1]);
            }
        }
    
        System.out.println(sb.toString());
    }

    public static String readZ(String str) {
        int len = str.length();
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<len;i++) {
            char c=str.charAt(i);
            char r = zh[c-'0'];
            if(c == '0') {
                sb.append(r);
                continue;
            }
            if(len-i == 4) {//千
                sb.append(r).append(letter[1]);
            } else if(len-i==3) {//百
                sb.append(r).append(letter[0]);
            } else if(len-i==2) {//十
                if(c!='1') {
                    sb.append(r);
                }
                sb.append(zh[10]);
            } else {//个
                sb.append(r);
            }
        }
        
        return sb.toString();
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务