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

查看12道真题和解析