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