Округление чисел
Считать с консоли 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.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader readerForConsole = new BufferedReader(new InputStreamReader(System.in));
String file1 = readerForConsole.readLine();
String file2 = readerForConsole.readLine();
BufferedReader readerForFile = new BufferedReader(new InputStreamReader(new FileInputStream(file1)));
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file2));
ArrayList<Double> list1 = new ArrayList<>();
ArrayList<Integer> results = new ArrayList<>();
while (readerForFile.ready()){
String strFile = readerForFile.readLine();
double res = Double.parseDouble(strFile);
list1.add(res);
}
for (double d:list1) { //d - дробь
int whole = (int)d; //целая часть
double remainder = d - whole; //остаток
if (d > 0.0){
if (remainder < 0.50){
results.add((int)d);
} else if (remainder >= 0.50){
results.add((int)d+1);
}
} else if (d < 0.0){
if (remainder < -0.50){
d = d-1.0;
results.add((int)d);
} else if (remainder >= -0.50){
results.add((int)d);
}
}
}
for (int a:results) {
outputStreamWriter.write(String.valueOf(a) + " ");
}
readerForConsole.close();
readerForFile.close();
outputStreamWriter.close();
}
}