Задача:
Считать с консоли 2 имени файла.
Первый файл содержит вещественные(дробные) числа, разделенные пробелом. Например, 3.1415.
Округлить числа до целых и записать через пробел во второй файл.
Закрыть потоки.
Принцип округления:
3.49 => 3
3.50 => 4
3.51 => 4
-3.49 => -3
-3.50 => -3
-3.51 => -4
Требования:
-
Программа должна два раза считать имена файлов с консоли.
-
Для первого файла создай поток для чтения. Для второго — поток для записи.
-
Считать числа из первого файла, округлить их и записать через пробел во второй.
-
Должны соблюдаться принципы округления, указанные в задании.
-
Созданные для файлов потоки должны быть закрыты.
Решение:
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file1 = reader.readLine();
String file2 = reader.readLine();
reader.close();
FileReader fileReader = new FileReader(file1);
FileWriter fileWriter = new FileWriter(file2);
BufferedReader readerFile = new BufferedReader(fileReader);
String line = readerFile.readLine();
StringBuilder stringWrite = new StringBuilder();
while(line != null) {
String[] numbers = line.split(" ");
double[] dNum = new double[numbers.length];
int[] result = new int[numbers.length];
for(int i = 0; i < numbers.length; i++) {
dNum[i] = Double.parseDouble(numbers[i]);
result[i] = (int) Math.round(dNum[i]);
if(i == (numbers.length - 1)) {
stringWrite.append(result[i] + "");
stringWrite.append("\n");
} else {
stringWrite.append(result[i] + " ");
}}
line = readerFile.readLine();
String res = stringWrite.toString();
fileWriter.write(res);
stringWrite.setLength(0);
}
fileReader.close();
readerFile.close();
fileWriter.close();
}}