日期:2014-05-20  浏览次数:20751 次

将输入的字符串翻译成中文,小问题!
package com.contest;

import java.util.HashMap;
import java.util.Map;

public class Contest01 {

private static int realLength = 0; // 存储数字的真实位数。
private static Map<String, String> map = new HashMap<String, String>(); // 将
// 1~9
// 分别翻译成中文.

/**
 * @param args
 */
public static void main(String[] args) {
int counttemp = 0;
String read = args[0];
for (int i = 0; i < read.length(); i++) {
if ("0".equals(read.substring(i, i + 1))) {
counttemp++;
} else {
break;
}
}

realLength = read.length() - counttemp; // 这里注意
String realString = read.substring(counttemp); // 获得真实字符串
System.out.println("readResult:" + realString);
System.out.println(realLength);
map.put("0", "零");
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", "九");
String str = readResult(realString, realLength);
System.out.println(str);
System.out.println(realString.length());

}

// 定义方法翻译字符串
private static String readResult(String realString, int len) {
String s = ""; // 存储返回的字符串
switch (len) {
case 0: // 位数都为 0 的情况
s = map.get("0");
break;
case 1:
s = map.get(realString.substring(0));
break;
case 2: // 有问题
if (countZero(realString) == 1) { // 有位数为零的情况
if (map.get(realString).substring(0, 1).equals("1")) { // 十位为
// “1”
s = "十";
} else { // 十位不为 ”1“
s = map.get(realString.substring(0, 1)) + "十";
}

} else { // 没有位数为 零的情况
if (map.get(realString).substring(0, 1).equals("1")) { // 十位为
// “1”
s = "十" + map.get(realString.substring(1));
} else { // 十位不为 ”1“
s = map.get(realString.substring(0, 1)) + "十"
+ map.get(realString.substring(1));
}

}
break;
case 3:
if (countZero(realString) == 0) { // 没有位数为 0
s = map.get(realString.substring(0, 1)) + "百"
+ map.get(realString.substring(1, 2)) + "十"
+ map.get(realString.substring(2));
} else if (countZero(realString) == 1) { // 有一位为 0
if (checkZero(realString, 1)) { // 十位为 0
s = map.get(realString.substring(0, 1)) + "百" + "零"
+ map.get(realString.substring(2));
} else { // 各位为 0
System.out.println("Here");
s = map.get(realString.substring(0, 1)) + "百"
+ map.get(realString.substring(1, 2)) + "十";
}
} else { // 有两位为 0