题解 | #人民币转换#
人民币转换
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; } }