Считать с консоли 2 имени файла. Первый файл содержит вещественные(дробные) числа, разделенные пробелом. Например, 3.1415. Округлить числа до целых и записать через пробел во второй файл. Закрыть потоки. Принцип округления: 3.49 — 3 3.50 — 4 3.51 — 4 -3.49 — -3 -3.50 — -3 -3.51 — -4 Требования: 1. Программа должна два раза считать имена файлов с консоли. 2. Для первого файла создай поток для чтения. Для второго - поток для записи. 3. Считать числа из первого файла, округлить их и записать через пробел во второй. 4. Должны соблюдаться принципы округления, указанные в задании. 5. Созданные для файлов потоки должны быть закрыты.
package com.javarush.task.task18.task1820;

/*
Округление чисел
*/

import java.io.*;
import java.lang.reflect.Array;
import java.util.ArrayList;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String file01 = reader.readLine();
        String file02 = reader.readLine();
        reader.close();

        ArrayList<Integer> buffer1 = new ArrayList<>();
        ArrayList<Integer> buffer2 = new ArrayList<>();

        FileInputStream file1 = new FileInputStream(file01);
        FileOutputStream file2 = new FileOutputStream(file02);
        //========================================================================== Первый код
        while(file1.available()>0)
        {
            buffer1.add(file1.read());
        }
        int j;
        for(int i = 0;i<buffer1.size()-1;i++)
        {
                if(buffer1.get(i+1)==(int)'.')
                {
                    boolean minus=false;
                    try {
                        if (buffer1.get(i - 1) == (int) '-') {
                            buffer2.add(buffer1.get(i - 1));
                            minus = true;
                        }
                    }catch (Exception e)
                    {}
                    if(buffer1.get(i+2)<(int)'5')
                        buffer2.add(buffer1.get(i));
                    else if(buffer1.get(i+2)>(int)'5')
                        buffer2.add(buffer1.get(i));
                    else if(buffer1.get(i+2)==(int)'5')
                    {
                        for(j = i+3;buffer1.get(j)==(int)'0'&& buffer1.get(j)!=(int)' '&&j<buffer1.size()-1;)
                            j++;
                        if(buffer1.get(j)==(int)' '||j==buffer1.size()-1)
                        {
                            if(minus)
                                buffer2.add(buffer1.get(i));
                            else
                                buffer2.add(buffer1.get(i)+1);
                        }
                        else
                            buffer2.add(buffer1.get(i)+1);
                    }
                    buffer2.add((int)' ');
                }

        }
        //========================================================================== Второй код
        /*
        String abs= "";
        while(file1.available()!=0)
        {
            abs+=(char)file1.read();
        }

        String[] abc = abs.split(" "); // Массив строк, содержащих числа
        String test="";
        for(int i = 0; i<abc.length;i++)
        {
            double numBer = Double.parseDouble(abc[i]);
            int finalN;
            if(numBer<0)
            {
                finalN=(int)Math.round(numBer);
                buffer2.add((int)'-');
            }
            else
                finalN=(int)Math.round(numBer);
            finalN=Math.abs(finalN);
            test=finalN+"";
            char[] abk = test.toCharArray();

            buffer2.add((int)abk[0]);
            if(i!=abc.length-1)
                buffer2.add((int)' ');

        }
        */
        //========================================================================== Третий код
        /*
        while(file1.available()!=0)
        {
            int date = file1.read();
            String number = "";
            while(file1.available()!=0 && date!=' ')
            {
                number+=(char)date;
                date = file1.read();
            }
            double OKRnumber = Double.parseDouble(number);
            long oknum;
            if(OKRnumber>0)
                oknum = Math.round(OKRnumber);
            else
                oknum=(int)Math.round(OKRnumber);
            char[] abs = Long.toString(oknum).toCharArray();
            buffer2.add((int)abs[0]);
            if(oknum<0)
                buffer2.add((int)abs[1]);
            buffer2.add((int)' ');
        }*/
        for(int buff: buffer2)file2.write(buff);
        file2.close();
        file1.close();
    }
}