перепробовал массу входных данных, все отлично отрабатывает, но...
package com.javarush.task.task19.task1924;
import java.io.*;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.*;
/*
Замена чисел
*/
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 {
String path;
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){
path = reader.readLine();
}
try(BufferedReader bfr = new BufferedReader(new FileReader(path))){
while (bfr.ready()){
String[] array = bfr.readLine().split(" ");
for (int i = 0; i < array.length;i++){
try{
int a = Integer.parseInt(array[i]);
if(map.containsKey(a))array[i] = map.get(a);
} catch (NumberFormatException e){}
}
String result = "";
for (String s : array){
result += s + " ";
}
System.out.println(result.trim());
}
}
}
}
trim()
обрезает не только тот пробел, который Вы добавили, но и все пробелы, символы табуляции и перевода строки, которые были в файле изначально. Используйте, вместо самописного цикла, методString.join()
.split(" ", -1)
, а потомjoin()
, то должно прокатить...trim()
всё равно, с какой целью Вы его вызывали, он просто обрежет все символы, коды которых меньше, либо равны0x20
, в конце результирующей строки. Попробуйте, к примеру, передать Вашему коду файл, который содержит только несколько знаков табуляции. В этом случае, по условию, результирующий файл должен содержать точную копию исходного, а у Вас, в результате, получится пустой файл.