import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) {
try{
BufferedReader readerFileName = new BufferedReader(new InputStreamReader(System.in)); //тут вводим путь к файлу
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(readerFileName.readLine()))));
/*тут считывается адрес файла строкой, и пишется все это дело в поток файлинпут, потом пишется в поток инпутстрим и потом в буфер*/
ArrayList<Integer> list = new ArrayList<>();
String line;
while((line = reader.readLine()) != null) {
int x = Integer.parseInt(line);
if (x%2 ==0) list.add(x);
}
Integer[] arry = {};
arry = list.toArray(new Integer[list.size()]);
Arrays.sort(arry);
for (int i=0;i<arry.length;i++){
System.out.println(arry[i]);
}
readerFileName.close();
reader.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
/*Сортировка четных чисел из файла
1. Ввести имя файла с консоли.
2. Прочитать из него набор чисел.
3. Вывести на консоль только четные, отсортированные по возрастанию.
Пример ввода:
5
8
-2
11
3
-5
2
10
Пример вывода:
-2
2
8
10
Требования:
1. Программа должна считывать данные с консоли.
2. Программа должна создавать FileInputStream для введенной с консоли строки.
3. Программа должна выводить данные на экран.
4. Программа должна вывести на экран все четные числа считанные из файла отсортированные по возрастанию.
5. Программа должна закрывать поток чтения из файла(FileInputStream).*/
Pavel Ziryukin
32 уровень
Необходимо экспертное мнение.
Архивный
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ГоффMaster
28 ноября 2019, 12:20полезный
Нужен ли здесь блок try-catch если он ничего полезного не делает?
Нужно ли переводить лист в аррэй в данном случае (см. Ксению Волкову)?
Не лучше ли поток ввода-вывода закрывать сразу, как он становится не нужным?
Integer имеет смысл использовать, когда это имеет смысл (например, нужны методы этого класса). Если можно обойтись int, то лучше обойтись int.
+1
Pavel Ziryukin
28 ноября 2019, 12:24
1) try-catch, тут нужен, можно, конечно, пробросить ексепшн, но я решил сделать так.
2) уже исправил
3) хороший совет, надо попробовать, спасибо.
4) ну это понятно)
0
ГоффMaster
28 ноября 2019, 12:34
1. Если можно упростить - упрощай. В таком виде try-catch бессмыслен - значит он не нужен. Ты же сам через месяц-другой будешь ломать голову, глядя на свой же код - "Зачем это я тут трай-кэтч пристроил, что за идея такая была?
0
Ksenia Volkova Java Developer в DXC Master
28 ноября 2019, 12:04полезный
Перевод списка в массив - только для Arrays.sort()?
Есть же и Collections.sort()
+2
Pavel Ziryukin
28 ноября 2019, 12:22
Переделал, хороший совет.
0
Pavel Ziryukin
28 ноября 2019, 12:22
Спасибо)
0
Pavel Ziryukin
28 ноября 2019, 11:57
Очень меня смущает переход от списка к массиву, ибо делал его интуитивно. До сих пор не могу понять где использовать int/Integer, в таких вот конструкциях. Остальное более менее понятно. Но если будут советы/замечания по коду, буду крайне рад.
0
Pavel Ziryukin
28 ноября 2019, 11:59
Не думал что Arrays.sort сработает с Integer/
0