В общем, у меня было две реализации. Одна снизу, вторая будет прикреплена ниже к содержанию вопроса. Оба вопроса заменяют числа на соответствующие слова, однако оба решения валидатор принимать не хочет. Разница между 1 и 2 решением (собственно, почему я и решил переписать) в том, что 1 решение заменяет цифры вне зависимости от их отдельности от чего-либо (что в принципе не смертельно и должно было приниматься), а второе решение сплитит по пробелу.
На ввод: 0 1 2 3 4 5 6 7 8 9 10 11 12
Оба решения выдали ответ: ноль один два три четыре пять шесть семь восемь девять десять одиннадцать двенадцать
Решение №1:
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(file));
while(fileReader.ready()) {
String line = fileReader.readLine();
if(line.contains("10"))
line = line.replace("10", map.get(10));
if(line.contains("11"))
line = line.replace("11", map.get(11));
if(line.contains("12"))
line = line.replace("12", map.get(12));
for(Map.Entry<Integer, String> entry : map.entrySet())
if(line.contains(entry.getKey().toString()))
line = line.replace(entry.getKey().toString(), entry.getValue());
System.out.println(line);
}
reader.close();
fileReader.close();
}
P.S. В решении 1 хотел поскорее отдать задачу валидатору, потому решил воспользоваться первым пришедшим в голову костылем. Проблема, из-за которой он понадобился, проста: числа 11, 12 и 10 программа воспринимала, как 1 и 1, 1 и 2, 1 и 0. Потому получалось одинодин, одиндва, одинноль вместо нужных слов.package com.javarush.task.task19.task1924;
import java.io.BufferedReader;
import java.io.FileReader;
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 Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(file));
while(fileReader.ready()) {
String line[] = fileReader.readLine().split(" ");
try {
for (int i = 0; i < line.length; i++) {
if (map.containsKey(Integer.parseInt(line[i]))) {
line[i] = map.get(Integer.parseInt(line[i]));
}
}
} catch (NumberFormatException e) {
}
for(String s : line)
System.out.print(s + " ");
System.out.println();
}
reader.close();
fileReader.close();
}
}