/*

  • 正则功能是在是太强大了,可以帮助简化逻辑,建议替换就替换吧
  • /
    import java.text.DecimalFormat;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext()) {
        double number = scanner.nextDouble();
        String value = new DecimalFormat("#0.00").format(number);
        String[] segments = value.split("\\.");
        long integer = Long.valueOf(segments[0]);
        initUnitArray(segments[0].length());
        int decimal = Integer.valueOf(segments[1]);
        String result = "人民币" + parseInteger(integer, 0) + "元" + parseDecimal(decimal);
        result = result.replaceAll("(\\u96f6[\\u62fe\\u4f70\\u4edf])+", "零"); //移除连续的零
        result = result.replaceAll("(\\u96f6+)([\\u5143\\u4e07\\u4ebf])", "$2"); //移除某些特殊单位前面的零
        result = result.replaceAll("(\\u4ebf)(\\u4e07)", "$1"); //不存在亿万的单位,需要转换。
        result = result.replaceAll("(\\u5e01)(\\u5143)", "$1"); //不存在此单位,进行转换
        result = result.replaceAll("(\\u58f9)(\\u62fe)", "$2");//“壹拾”替换成“拾”
        System.out.println(result);
    }
}

private static String parseInteger(long origin, int parsedLength) {
    String formatted = parseNum((int)(origin % 10)) + getUnit(parsedLength);
    if (origin >= 10) {
        return parseInteger(origin / 10, parsedLength + 1) + formatted;
    }
    return formatted;
}

private static String parseDecimal(int origin) {
    if (origin == 0) {
        return "整";
    } else {
        return (origin / 10 != 0 ? parseNum(origin / 10) + "角" : "") + (origin % 10 != 0 ? parseNum(origin % 10) + "分" : "");
    }
}

private static String parseNum(int num) {
    String[] translate = {
            "零", "壹", "贰", "叁",
            "肆", "伍", "陆", "柒",
            "捌", "玖"
    };
    return translate[num];
}

private static List<String> UNITS;

private static void initUnitArray(int numLength) {
    String[] units = {
            "", "拾", "佰", "仟",
            "万", "拾", "佰", "仟",
            "亿", "拾", "佰", "仟",
            "万", "拾", "佰", "仟"
    };
    UNITS = new ArrayList<>(numLength);
    for (String item : units) {
        UNITS.add(item);
    }
    if (numLength > units.length) {
        int offset = numLength - units.length;
        for (int index = 0; index < offset; index++) {
            switch(index % 8) {
                case 0:
                    UNITS.add("万");
                    break;
                case 1:
                case 5:
                    UNITS.add("拾");
                    break;
                case 2:
                case 6:
                    UNITS.add("佰");
                    break;
                case 3:
                case 7:
                    UNITS.add("仟");
                    break;
                case 4:
                    UNITS.add("亿");
                    break;
            }
        }
    }
}

private static String getUnit(int length) {
    return UNITS.get(length);
}

}