Всем привет!
Вывод по примеру из условия правильный, но валидатор не пропускает. В чем ошибка? Может есть какой то вариант, где не правильно выдаст? Старался написать более менее универсальный вариант
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.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Замена чисел
*/
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 br = new BufferedReader(new InputStreamReader(System.in));
String file = br.readLine();
br.close();
br = new BufferedReader(new FileReader(file));
String line, str = "";
int ind_b = 0, ind_e = 0, i = 0;
while ((line = br.readLine()) != null) {
// for (int i = 0; i < mas.length; i++) {
while (i < line.length()) {
char[] mas = line.toCharArray();
//находим цифру
if (Character.isDigit(mas[i])) {
//проверяем если цифра не в начале строки
if (i != 0) {
//если 2 цифры
if (!Character.isDigit(mas[i - 1]) && Character.isDigit(mas[i + 1]) && !Character.isDigit(mas[i + 2])) {
ind_b = i;
ind_e = i + 2;
}
//если 1 цифра
if (!Character.isDigit(mas[i - 1]) && !Character.isDigit(mas[i + 1])) {
ind_b = i;
ind_e = i + 1;
}
}
//если цифра в начале строки
if (i == 0) {
//если 2 цифры
if (Character.isDigit(mas[i + 1]) && !Character.isDigit(mas[i + 2])) {
ind_b = i;
ind_e = i + 2;
}
//если 1 цифра
if (!Character.isDigit(mas[i + 1])) {
ind_b = i;
ind_e = i + 1;
}
}
for (Map.Entry<Integer, String> pair : map.entrySet()) {
if (pair.getKey().toString().equals(line.substring(ind_b, ind_e))) {
line = line.substring(0, ind_b) + pair.getValue() + line.substring(ind_e);
break;
}
}
}
i++;
}
System.out.println(line);
}
br.close();
}
}