Код работает и выполняет посатавленную задачу
package com.javarush.task.task18.task1820;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Округление чисел
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileFirstName = reader.readLine();
String fileSecondName = reader.readLine();
reader.close();
String s;
FileInputStream fileFirstRead = new FileInputStream (fileFirstName);
FileOutputStream fileSecondWrite = new FileOutputStream(fileSecondName);
StringBuilder sBuilder = new StringBuilder();
while (fileFirstRead.available() > 0){//пока есть еще непрочитанные байты
int data = fileFirstRead.read(); // прочитать очередной байт в переменную data
sBuilder.append((char) data); // переводим в строку
//можно преобразовать в char и работать с цифрами. Пробел = 32 битам
// нужно отбирать числа и округлять их записывая в firstFileByte
}
s = sBuilder.toString();
Pattern pattern = Pattern.compile("[+-]?([0-9]*[.])[0-9]+"); //сравниваем с регуляркой десятичного числа
Matcher matcher = pattern.matcher(s); // мэтчим
while (matcher.find()){ //если соответствует десятичному числу c +или -
int start=matcher.start();
int end=matcher.end();
String rebuiltS = s.substring(start,end);
double fff = Double.parseDouble(rebuiltS);
int result = (int) Math.round(fff); //округляем и записываем(fileSecondWrite) через data
byte [] xx = (Integer.toString(result)).getBytes(StandardCharsets.UTF_8);
fileSecondWrite.write(xx);
fileSecondWrite.write(32);
}
fileSecondWrite.close();
fileFirstRead.close();
}
}