题解 | #人民币转换#

人民币转换

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
    static String[] chineseNum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    static String[] chinesejin = {"元","万","亿"};
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line ;
        while( (line=br.readLine())!=null ){
            String[] splits = line.split("\\.");
            String xs = splits[1];
            int zs = Integer.parseInt(splits[0]);
            String res = "人民币";
            if(splits[1].equals("00")){
                res = res +zhengshu(zs)+"整";
            }else if(zs==0){
                res = res + xiaoshu(xs);               
            }else{
                res = res +zhengshu(zs)+xiaoshu(xs);
            }
            System.out.println(res);
            
        }
    }
    static String zhengshu(int zs){
        StringBuilder sb = new StringBuilder();
            int flag = 0;
            while(zs%10000!=0){
                sb.append(chinesejin[flag]);
                int tmp = zs%10000;
                //每一位的数字
                int qian = tmp/1000;
                int bai = tmp%1000/100;
                int shi = tmp%100/10;
                int ge = tmp%10;
                //从低位到高位读取,并且是倒着存  佰贰
                if(ge!=0){
                    sb.append(chineseNum[ge]);
                }
                if(shi!=0){
                    sb.append("拾");
                    //存拾伍  不存壹拾伍
                    if(shi!=1)
                        sb.append(chineseNum[shi]);
                }
                if(bai!=0){
                    //倒着存
                    sb.append("佰");
                    sb.append(chineseNum[bai]);
                }
                if(qian!=0){
                    //倒着存
                    sb.append("仟");
                    sb.append(chineseNum[qian]);
                }
                flag++;
                zs=zs/10000;
            }
        return sb.reverse().toString();
    }
    static String xiaoshu(String xs){
        String res = "";
        //角
        if(xs.charAt(0)!='0'){
            res = res+chineseNum[xs.charAt(0)-'0']+"角";
        }
        if(xs.charAt(1)!='0'){
            res = res+chineseNum[xs.charAt(1)-'0']+"分";
        }
        return res;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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