Добрый вечер!
Вывод по условию. Что хочет валидатор?
Читаю строками - вывожу строками.
Точку в конце строки отрезал и проверял на число. Потом добавлял к выводу.
Не вижу, за что зацепиться.
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.ArrayList;
import java.util.HashMap;
import java.util.Map;
// 1. В статическом блоке инициализировать словарь map парами [число-слово] от 0 до 12 включительно.
// Например, 0 - "ноль", 1 - "один", 2 - "два"
// 2. Считать с консоли имя файла, считать содержимое файла.
// 3. Заменить все числа на слова используя словарь map.
// 4. Результат вывести на экран.
// 5. Закрыть потоки.
// Пример данных в файле:
// Это стоит 1 бакс, а вот это - 12.
// Переменная имеет имя file1.
// 110 - это число.
// Пример вывода в консоль:
// Это стоит один бакс, а вот это - двенадцать.
// Переменная имеет имя file1.
// 110 - это число.
// Requirements:
// 1. Класс Solution должен содержать публичное статическое поле map типа Map<Integer, String>,
// которое должно быть сразу проинициализировано.
// 2. Программа должна считывать имя файла с консоли (используй BufferedReader).
// 3. BufferedReader для считывания данных с консоли должен быть закрыт.
// 4. Программа должна считывать содержимое файла (используй FileReader).
// 5. Поток чтения из файла (FileReader) должен быть закрыт.
// 6. Программа должна выводить в консоль все строки из файла, но числа должны быть заменены на слова из словаря map.
// 7. Класс Solution должен содержать статический блок, в котором добавляются в map тринадцать пар.
// Вот 1 иль единица, Очень тонкая, как спица. А вот это цифра 2. Полюбуйтесь, какова: Выгибает двойка шею, Волочится хвост за нею.
// А за двойкой – посмотри- Выступает цифра 3. Тройка — третий из значков- Состоит из двух крючков. За тремя идут 4, Острый локоть оттопыря.
// А потом пошла плясать По бумаге цифра 5. Руку вправо протянула, Ножку круто изогнула. Цифра 6 — дверной замочек: Сверху крюк, внизу кружочек.
// Вот семерка – кочерга. У нее одна нога. У восьмерки два кольца Без начала и конца.
// Цифра 9 иль девятка, Цирковая акробатка: Если на голову встанет, Цифрой 6 девятка станет.
// Цифра вроде буквы О- Это 0, иль ничего. Круглый 0, такой хорошенький, Но не значит ничегошеньки.
// Если ж слева, рядом с ним Единицу примостим, Он побольше станет весить, Потому что это — 10.
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 {
String input = "";
String output = "";
String rezult = "";
String punct = "";
int temp = 0;
String tempString = "";
String replaseMap = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String nameFile = reader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(nameFile));
while (fileReader.ready()) {
input = fileReader.readLine();
String[] strings = input.split(" ");
for (int i = 0; i < strings.length; i++) {
if (strings[i].length() > 1){
tempString = strings[i].substring(0, strings[i].length() - 1);
punct = strings[i].substring(strings[i].length() - 1);
} else {
tempString = strings[i];
punct = "";
}
try {
temp = Integer.parseInt(tempString);
if (temp >= 0 && temp <= 12) {
for (Map.Entry<Integer, String> pair : map.entrySet()) {
if (pair.getKey() == temp) {
replaseMap = pair.getValue();
output += replaseMap + punct + " ";
break;
}
}
} else {
output += strings[i] + " ";
}
} catch (NumberFormatException e) {
output += strings[i] + " ";
}
}
rezult = output.trim();
System.out.println(rezult);
output = "";
}
reader.close();
fileReader.close();
}
}