Причем валидатор не пропускает по 2-м пунктам.
Странно reader.close(); есть.
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 IOException {
BufferedReader readerF = new BufferedReader(new InputStreamReader(System.in));
String f = readerF.readLine();
readerF.close();
BufferedReader reader = new BufferedReader(new FileReader(f));
while (reader.ready()) {
String[] words = reader.readLine().split(" ");
for(int i = 0; i < words.length; i++) {
String tmp = words[i].replaceAll("\\W", "");
if (tmp.replaceAll("\\d","").length() == 0 & tmp.length() != 0 & tmp.length() < 3) {
int intValue = Integer.parseInt(tmp);
words[i] = words[i].replace(tmp, map.get(intValue));
}
}
System.out.println(String.join(" ", words));
}
reader.close();
}
}