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