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