题解 | #人民币转换#
人民币转换
http://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b
import java.util.*;
public class Main {
static String [] sig = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
static String [] sub = {"", "万", "亿"};
static String [] unit = {"拾", "佰", "仟"};
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
String v = str.substring(0, str.indexOf("."));
StringBuilder sb = new StringBuilder("人民币");
if (!"0".equals(v)) {
if (v.length() % 4 == 1) {
v = "000" + v;
} else if (v.length() % 4 == 2) {
v = "00" + v;
} else if (v.length() % 4 == 3) {
v = "0" + v;
}
int size = v.length() / 4;
for (int i = 0; i < v.length() - 3; i += 4) {
calc(sb,v.substring(i, i + 4));
sb.append(sub[size - (i + 4) / 4]);
}
sb.append("元");
}
int n = Integer.parseInt(str.substring(str.indexOf(".") + 1));
if (n == 0) {
sb.append("整");
} else if (n / 10 != 0 && n % 10 == 0) {
sb.append(sig[n / 10]).append("角");
} else if (n / 10 != 0 && n % 10 != 0) {
sb.append(sig[n / 10]).append("角").append(sig[n % 10]).append("分");
} else {
sb.append(sig[n % 10]).append("分");
}
String r = sb.toString().replace("零零", "");
System.out.println(r);
}
public static void calc(StringBuilder sb,String val) {
int num = Integer.parseInt(val);
int q = num / 1000;
int b = num % 1000 / 100;
int s = num % 100 / 10;
int g = num % 10;
if (q == 0 && b == 0 && s == 0) {
sb.append(sig[g]);
return;//只有各位
}
if (q != 0) { //千位
sb.append(sig[q]).append(unit[2]);
}
if (b != 0) {
sb.append(sig[b]).append(unit[1]);
} else if (q != 0) {
sb.append(sig[0]);//百位一个零
}
if (s == 0) {
sb.append(sig[0]);//十位一个零
} else if (s == 1) {
sb.append(unit[0]);//拾
} else if (s > 1) {
sb.append(sig[s]).append(unit[0]);
}
sb.append(sig[g]);
}
}