Все тестовые строки из задания обрабатываются корректно, не понимаю в чём ошибка.
package com.javarush.task.task19.task1924;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Замена чисел
*/
public class Solution {
public static Map<Integer, String> map = new HashMap<Integer, String>();
static {
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, "девять");
map.put(10, "десять");
map.put(11, "одиннадцать");
map.put(12, "двенадцать");
}
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
BufferedReader fReader = new BufferedReader(new FileReader(fileName));
while(fReader.ready()) {
String line = reader.readLine();
String[] buffer = line.split(" ");
for (int i = 0; i < buffer.length; i++) {
if (buffer[i].matches("\\d+[!.,?]{1}") | buffer[i].matches("\\d+")) {
try{
if (map.get(Integer.parseInt(buffer[i])) != null) {
buffer[i] = map.get(Integer.parseInt(buffer[i]));
}
} catch (NumberFormatException e) {
int number = Integer.parseInt(buffer[i].substring(0, buffer[i].length() - 1));
String dot = buffer[i].substring(buffer[i].length() - 1);
buffer[i] = map.get(number) + dot;
}
}
}
line = String.join(" ", buffer);
System.out.println(line);
}
fReader.close();
}
}