Считать с консоли 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();
}
}