整数部分每四位进行分段,根据数据的长度分别进行转换。
import java.util.*;
public class Main {
public static HashMap<Integer, String> map = new HashMap<>();
static {
map.put(1, "壹");
map.put(2, "贰");
map.put(3, "叁");
map.put(4, "肆");
map.put(5, "伍");
map.put(6, "陆");
map.put(7, "柒");
map.put(8, "捌");
map.put(9, "玖");
map.put(10, "拾");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
String[] s = str.split("\\.");
int len = s[0].length();
StringBuilder sb = new StringBuilder();
sb.append("人民币");
if (len > 0 && len <= 4) {
sb.append(changeStr(s[0]));
if (s[0].replaceAll("0", "").length() > 0) {
sb.append("元");
}
} else if (len > 4 && len <= 8) {
sb.append(changeStr(s[0].substring(0, len - 4)));
sb.append("万");
if (len == 5 && s[0].substring(len - 4).startsWith("0")) {
sb.append("零");
}
sb.append(changeStr(s[0].substring(len - 4)));
sb.append("元");
} else if (len > 8 && len <= 12) {
sb.append(changeStr(s[0].substring(0, len - 8)));
sb.append("亿");
sb.append(changeStr(s[0].substring(len - 8, len - 4)));
if (!"0000".equals(s[0].substring(len - 8, len - 4))) {
sb.append("万");
}
sb.append(changeStr(s[0].substring(len - 4)));
sb.append("元");
}
if ("00".equals(s[1])) {
sb.append("整");
} else {
int x = s[1].charAt(0) - '0';
int y = s[1].charAt(1) - '0';
if (x != 0) {
sb.append(map.get(x) + "角");
}
if (y != 0) {
sb.append(map.get(y) + "分");
}
}
System.out.println(sb);
}
public static String changeStr(String s) {
String ss = ("0000" + s).substring(s.length());
int a = ss.charAt(0) - '0';
int b = ss.charAt(1) - '0';
int c = ss.charAt(2) - '0';
int d = ss.charAt(3) - '0';
StringBuilder sb = new StringBuilder();
if (a != 0) {
sb.append(map.get(a) + "仟");
}
if (b != 0) {
sb.append(map.get(b) + "佰");
} else if (a != 0 && (c != 0 || d != 0)) {
sb.append("零");
}
if (c == 1) {
sb.append("拾");
} else if (c != 0) {
sb.append(map.get(c) + "拾");
} else if (b != 0 && d != 0) {
sb.append("零");
}
if (d != 0) {
sb.append(map.get(d));
}
return sb.toString();
}
}

京公网安备 11010502036488号