Программа корректно работает с числами по примеру:
файл1: 14.5 12.7 1.8 2.9 6.4 3.5 12 15
файл2: 15 13 2 3 6 4 12 15
Что нужно поправить?
package com.javarush.task.task18.task1820;
/*
Округление чисел
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream(new BufferedReader(new InputStreamReader(System.in)).readLine());
FileOutputStream fos = new FileOutputStream(new BufferedReader(new InputStreamReader(System.in)).readLine());
// запишем поток из первого файла в строку
byte[] arrByte = new byte[fis.available()];
fis.read(arrByte);
String string = new String(arrByte);
//разобьем её по пробелам на массив строк, в каждой из которых - число
String[] strings = string.split(" ");
List <Integer> rounded = new ArrayList<>();
//переводим строки в double, округляем и записываем в список int-ов
for (int i =0; i< strings.length; i++) {
double a = Double.parseDouble(strings[i]);
if (a%(int)a<0.5) a = (int)a;
else a = (int)a+1;
rounded.add((int)a);
}
// из списка делаем новую строку, бьем на символы
String roundedStr = rounded.toString();
char[] killSymbols = roundedStr.toCharArray();
// обнуляем строку и записываем в нее только символы чисел и пробелы
roundedStr = "";
for (int i=0; i<killSymbols.length; i++) {
if (killSymbols[i] != ',' && killSymbols[i] != ']' && killSymbols[i] != '[') {
roundedStr = roundedStr + killSymbols[i];
}
}
//бьем строку на байты и записываем во второй файл
byte[] arrByteFinal = roundedStr.getBytes();
fos.write(arrByteFinal, 0, arrByteFinal.length);
fis.close();
fos.close();
}
}