My solution seems good to me, but not for codegym. what's the problem?
package com.codegym.task.task19.task1924;
import java.util.HashMap;
import java.util.Map;
import java.io.*;
import java.util.*;
/*
Replacing numbers
*/
public class Solution {
public static Map<Integer, String> map = new HashMap<Integer, String>();
static{
map.put(0, "zero");
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
map.put(4, "four");
map.put(5, "five");
map.put(6, "six");
map.put(7, "seven");
map.put(8, "eight");
map.put(9, "nine");
map.put(10, "ten");
map.put(11, "eleven");
map.put(12, "twelve");
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String fileName = bf.readLine();
bf.close();
FileReader fileReader = new FileReader(fileName);
BufferedReader reader = new BufferedReader(fileReader);
String line;
while (reader.ready()) {
line = reader.readLine();
String[] s = line.split(" ");
for (int i = 0; i < s.length; i++) {
for (Map.Entry<Integer, String> pair : map.entrySet()) {
Integer key = pair.getKey();
String value = pair.getValue();
if (s[i].equals(key.toString())) {
line = line.replaceFirst(key.toString(), value);
}
if (s[i].charAt(s[i].length() - 1) == '.' && (s[i].length() == 2 || s[i].length() == 3)) {
String removedDot = s[i].replace(".", " ");
if(removedDot.trim().equals(key.toString())) {
line = line.replace(key.toString(), value);
}
}
}
if (i == s.length - 1)
System.out.println(line);
}
}
fileReader.close();
reader.close();
}
}