我不知道我错在哪里,求解
package zh.codegym.task.task19.task1924;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/*
替换数字
*/
public class Solution {
public static Map<Integer, String> map = new HashMap<Integer, String>();
static {
String[] numbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"};
for (int i = 0; i<=12; i++) {
map.put(i, numbers[i]);
}
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader fReader = new BufferedReader(new FileReader(reader.readLine()));
while (fReader.ready()) {
String s = fReader.readLine();
char[] list = s.toCharArray();
for (int i = 0; i<list.length; ) {
StringBuilder builder = new StringBuilder();
int start = i;
while (i<list.length && isLetterOrNumber(list[i])) {
builder.append(list[i]);
i++;
}
int foot = i;
if (builder.toString().isEmpty()) {
i++;
continue;
}
String x = builder.toString();
if (x.matches("\\d+")) {
int k = Integer.parseInt(x);
if (k>12) continue;
s = s.substring(0, start)+map.get(k)+s.substring(foot);
}
}
System.out.println(s);
}
reader.close();
fReader.close();
}
private static boolean isLetterOrNumber(char c) {
return c>='0' && c<='9' || c>='a' && c<='z' || c>='A' && c<='Z';
}
}