整数部分每四位进行分段,根据数据的长度分别进行转换。
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(); } }