package ArrayAlgo;
public class NumberToChineseUtil {
public static void main(String[] args) {
String result = numToChinese(12345);
System.out.println(result);
System.out.println(chineseToNum(result));
}
//阿拉伯数字转中文数字
public static String numToChinese(int num) {
String[] units = {"", "十", "百", "千", "万", "十万", "百万", "千万", "亿", "十亿", "百亿", "千亿", "万亿"};
char[] numArray = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
char[] val = String.valueOf(num).toCharArray();
int len = val.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
String m = val[i] + "";
int n = Integer.parseInt(m);
boolean isZero = n == 0;
String unit = units[len - 1 - i];
if (isZero) {
if ('0' == val[i - 1]) {
continue;
} else {
sb.append(numArray[n]);
}
} else {
sb.append(numArray[n]);
sb.append(unit);
}
}
if (sb.toString().endsWith("零")) {
return sb.substring(0, sb.toString().lastIndexOf("零"));
}
return sb.toString();
}
//中文数字转阿拉伯数字
public static int chineseToNum(String num) {
char[] unitArr = {'十', '百', '千', '万', '亿'};
char[] numArr = {'一', '二', '三', '四', '五', '六', '七', '八', '九'};
int result = 0;
int temp = 1;
int count = 0;
for (int i = 0; i < num.length(); i++) {
boolean unit = true;//判断是否是chArr
char c = num.charAt(i);
//判断是数字还是单位
for (int j = 0; j < numArr.length; j++) {
if (c == numArr[j]) {
if (0 != count) {
result += temp;
temp = 1;
count = 0;
}
temp = j + 1;
unit = false;
break;
}
}
if (unit) {
for (int j = 0; j < unitArr.length; j++) {
if (c == unitArr[j]) {
switch (j) {
case 0:
temp = temp * 10;
break;
case 1:
temp = temp * 100;
break;
case 2:
temp = temp * 1000;
break;
case 3:
temp = temp * 10000;
break;
case 4:
temp = temp * 100000000;
break;
default:
break;
}
count++;
}
}
}
if (i == num.length() - 1) {
result += temp;
}
}
return result;
}
}