Понакидал туда кучу тестов все их задачка прошла, а вот у валидатора - другое мнение :(
package com.javarush.task.task19.task1924;
import java.io.*;
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 reader=new BufferedReader(new InputStreamReader(System.in));
String fileName=reader.readLine();
reader.close();
ArrayList<String> array=new ArrayList<>();
String[] mas;
BufferedReader fReader=new BufferedReader(new FileReader(fileName));
while (fReader.ready()){
mas=fReader.readLine().split(" ");
array.add(numberPerWord(mas));
}
fReader.close();
BufferedWriter writer=new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < array.size(); i++) {
writer.write(array.get(i));
if ((i+1)!=array.size()) writer.newLine();
}
writer.close();
}
static String numberPerWord(String[] mas){
String rez="";
String tmp="";
int a;
for (int i = 0; i < mas.length; i++) {
try {
a=Integer.parseInt(mas[i].replaceAll("[.,?!-]",""));
if (map.containsKey(a)) {
mas[i]=mas[i].replace(""+a,map.get(a));
}
} catch (NumberFormatException e) {
}
rez+=mas[i]+" ";
}
return rez.trim();
}
}