Прошу підказати, в чому може бути помилка, або які саме варіанти вхідних даних не опрацюються належним чином!
Не може ж бути проблема з валідацією через інший метод вирішення?
Чи треба тільки рейплесАЛЛ з мапи через регулярки по МЕЖАХ слова \\b
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.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 readerConsole = new BufferedReader(new InputStreamReader(System.in));
BufferedReader reader = new BufferedReader(new FileReader(readerConsole.readLine()));
readerConsole.close();
StringBuilder sb = new StringBuilder();
while (reader.ready()) {
sb = new StringBuilder(reader.readLine());
String[] strArr = String.valueOf(sb).split(" ");
for (int i = 0; i < strArr.length; i++) {
String str1 = strArr[i].replaceAll("\\p{Punct}", "");
int start = sb.indexOf(str1);
int len = str1.length();
if (!str1.equals(isDigit(str1)))
sb.replace(start, start + len, isDigit(str1));
}
System.out.println(sb.toString());
}
reader.close();
}
private static String isDigit(String s) {
String result = s;
try {
int x = Integer.parseInt(s);
if (map.containsKey(x))
result = map.get(x);
} catch (NumberFormatException e) {
result = s;
}
return result;
}
}