import java.util.HashMap;
import java.util.Map;
public class ChineseToNumber {
private static final Map<Character, Integer> chineseNumMap = new HashMap<>();
private static final Map<Character, Integer> chineseUnitMap = new HashMap<>();
static {
chineseNumMap.put('零', 0);
chineseNumMap.put('一', 1);
chineseNumMap.put('二', 2);
chineseNumMap.put('三', 3);
chineseNumMap.put('四', 4);
chineseNumMap.put('五', 5);
chineseNumMap.put('六', 6);
chineseNumMap.put('七', 7);
chineseNumMap.put('八', 8);
chineseNumMap.put('九', 9);
chineseUnitMap.put('十', 10);
chineseUnitMap.put('百', 100);
chineseUnitMap.put('千', 1000);
}
public static int chineseToNumber(String chinese) {
int result = 0;
int temp = 0;
int unit = 1;
for (int i = chinese.length() - 1; i >= 0; i--) {
char c = chinese.charAt(i);
if (chineseUnitMap.containsKey(c)) {
unit = chineseUnitMap.get(c);
if (i == 0) {
temp = 1;
}
} else if (chineseNumMap.containsKey(c)) {
int num = chineseNumMap.get(c);
temp += num * unit;
unit = 1;
}
}
result += temp;
return result;
}
public static void main(String[] args) {
String chinese1 = "七十七";
String chinese2 = "八十九";
String chinese3 = "一百一十";
String chinese4 = "二百零五";
String chinese5 = "三千四百五十六";
System.out.println(chinese1 + " 转换为数字: " + chineseToNumber(chinese1));
System.out.println(chinese2 + " 转换为数字: " + chineseToNumber(chinese2));
System.out.println(chinese3 + " 转换为数字: " + chineseToNumber(chinese3));
System.out.println(chinese4 + " 转换为数字: " + chineseToNumber(chinese4));
System.out.println(chinese5 + " 转换为数字: " + chineseToNumber(chinese5));
}
}