Посмотрел готовый ответ. Да, решение короче на несколько десятков строк, но!
Хотел бы узнать, почему не проходит валидация, хоть и выводятся, и заменяются все строки, которые нужны
package com.javarush.task.task19.task1924;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
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, "двенадцать");
}
//Исправить задачу. Сделать задачу на ArrayList<String>
public static void main(String[] args) {
String fp = "";
try (BufferedReader pathReader = new BufferedReader(new InputStreamReader(System.in))) {
fp = pathReader.readLine();
} catch (IOException ignore) {
}
ArrayList<String> fileContentList = new ArrayList<>();
try (BufferedReader fileReader = new BufferedReader(new FileReader(fp))) {
while (fileReader.ready()) fileContentList.add(fileReader.readLine());
} catch (IOException ignore) {
}
for (int i = 0; i < fileContentList.size(); i++) {
String stringFromArray = fileContentList.get(i);
String[] stringArray = stringFromArray.split(" ");
for (int j = 0; j < stringArray.length; j++ ) {
try {
int decimalFromString = Integer.parseInt(stringArray[j]);
for(Map.Entry<Integer,String> entry : map.entrySet()) {
if (decimalFromString == entry.getKey()) {
stringArray[j] = entry.getValue();
}
}
} catch (NumberFormatException e) {
continue;
}
}
fileContentList.set(i, String.join(" ", stringArray).trim());
}
for (String s : fileContentList) {
System.out.println(s);
}
}
}
