/*
- 正则功能是在是太强大了,可以帮助简化逻辑,建议替换就替换吧
- /
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);
}}

京公网安备 11010502036488号