题解 | #人民币转换#

人民币转换

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

import java.util.*;

public class Main {
    static String [] sig = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
    static String [] sub = {"", "万", "亿"};
    static String [] unit = {"拾", "佰", "仟"};
    public static void main(String [] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        String v = str.substring(0, str.indexOf("."));
        StringBuilder sb = new StringBuilder("人民币");
        if (!"0".equals(v)) {
            if (v.length() % 4 == 1) {
                v = "000" + v;
            } else if (v.length() % 4 == 2) {
                v = "00" + v;
            } else if (v.length() % 4 == 3) {
                v = "0" + v;
            }
            int size = v.length() / 4;
            for (int i = 0; i < v.length() - 3; i += 4) {
                calc(sb,v.substring(i, i + 4));
                sb.append(sub[size - (i + 4) / 4]);
            }
            sb.append("元");
        }
        int n = Integer.parseInt(str.substring(str.indexOf(".") + 1));
        if (n == 0) {
            sb.append("整");
        } else if (n / 10 != 0 && n % 10 == 0) {
            sb.append(sig[n / 10]).append("角");
        } else if (n / 10 != 0 && n % 10 != 0) {
            sb.append(sig[n / 10]).append("角").append(sig[n % 10]).append("分");
        } else {
            sb.append(sig[n % 10]).append("分");
        }
        String r = sb.toString().replace("零零", "");
        System.out.println(r);

    }

    public static void calc(StringBuilder sb,String val) {
        int num = Integer.parseInt(val);
        int q = num / 1000;
        int b = num % 1000 / 100;
        int s = num % 100 / 10;
        int g = num % 10;
        if (q == 0 && b == 0 && s == 0) {
            sb.append(sig[g]);
            return;//只有各位
        }
        if (q != 0) { //千位
            sb.append(sig[q]).append(unit[2]);
        }
        if (b != 0) {
            sb.append(sig[b]).append(unit[1]);
        } else if (q != 0) {
            sb.append(sig[0]);//百位一个零
        }
        if (s == 0) {
            sb.append(sig[0]);//十位一个零
        } else if (s == 1) {
            sb.append(unit[0]);//拾
        } else if (s > 1) {
            sb.append(sig[s]).append(unit[0]);
        }
        sb.append(sig[g]);
    }




}
全部评论

相关推荐

兄弟找我内推呗:兄弟你问问他们饭菜能打包吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务