Сортировка четных чисел из файла

  • 7
  • Недоступна
Если упорядоченный изоморф не уверен в трезвости другого упорядоченного изоморфа, он просит его пройти простенький тестик: сначала ввести имя файла с консоли, прочитать из него набор чисел, а затем вывести на консоль только четные, отсортированные по возрастанию. Получится?
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (227)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Evgeny Gaychenkov14 уровень, Самара
вчера, 08:22
решил через эту длинную строку BufferedReader fileName = new BufferedReader(new InputStreamReader(new FileInputStream(reader.readLine()))); потом создаем arraylist и текстовую переменную и делаем while пока строка !=0, там парсим строку в число и добавляем в arraylist только четные через if %. сортируем через collection и выводим.
MartyMcAir14 уровень
воскресенье, 18:36
Основная сложность большого кол-ва вариаций потоков.. Исходу неясно, что куда как и почему.. глаза разбегаются вот накидал не большую схему в coggle.it Вообщем суть такая, как я понял к примеру нам нужен InputStreamReader смотрим что он принимает в свой конструктор InputStream in - Значит все что наследуют абстрактный класс InputStream - нам подойдут. Моя проблема заключалось в том, что не те методы юзал для чтения, а потом пытался с конвертить байты в char to String to Integer.. а в итоге оказалось просто надо было добавить не достающие прослойки потоков.. С комментов что ниже: Как читать с файла в Java Какой метод считывания с файла лучше использовать? Выбор между Scanner, BufferedReader или Files зависит от требований вашего проекта. Если вам нужно считывать с файла, опираясь на разделитель, то желательно использовать класс Scanner. Если файл небольшой, то используем класс Files. Если нужно считать информация с больших файлов, то отлично подойдет BufferedReader. Потоки ввода, InputStream При побайтовом чтении символов из форматированного потока DataInputStream методом readByte() любое полученное значение будет считаться действительным, поэтому возвращаемое значение неприменимо для идентификации конца потока. Вместо этого можно использовать метод available(), который сообщает, сколько еще осталось символов. ___как бы все эти потоки, привести в голове в одну понятную..
LuneFox14 уровень, Москва
воскресенье, 11:01
Заняло около 30-40 строк. Алгоритм такой: 1) Считываю все символы, что есть в файле, записываю в одну строку 2) Получившуюся большую строку разделяю на массив строк по символу переноса 3) Создаю список чисел, затем каждую строку из массива конвертирую в число, и если оно чётное, сразу заношу в список 4) Сортирую список по возрастанию и вывожу результат
Vgoose14 уровень, Москва
воскресенье, 07:56
Среднее количество попыток для этой задачи 3.14.
что бы это могло значить? xD
Georgiy15 уровень
20 июня, 14:15
Решил через DataInputStream, обернув им FileInputStream, ну а дальше все четные в ArrayList и сортировка коллекции
Виолетта14 уровень, Санкт-Петербург
15 июня, 10:29
Хах, можно довольно просто уложиться в тридцать-сорок строчек) Но задача интересная, понравилась)
Константин18 уровень, Москва
1 июня, 16:01
Да, задача самая сложная из 13 уровней. Три часа(со второй попытки, т.к. забыл ещё чётные числа по возрастанию отсортировать). 88 строчек кода. 1. Сохранил файл Блокнота в UTF-8. 2. После того как перегнал из файла в лист чаров. Удалил первые три чара(т.к. они служебные. это я потом понял наигравшись с выводом. там пeред "5" три символа. В общем они за кодировку отвечают. В файле их не видно, но они есть. И при чтении из файла в буфер записываются.) 3. Создал лист из десяти чисел и "-". 4. Далее из списка чаров сформировал список слов. В качестве разделителя выбрал "\n". Учитывал, чтобы символ, из которого формирую очередную строку, был из чисел и знак минус.(вот до этого долго доходил, т.к. к числам цеплялись кроме "\n", левые символы которых не видно, а они есть и в результате ловил NumberFormatException). 5. Ну потом дело техники. Перевёл в Integer, проверил на чётность, записал в лист, сортировка sort(), и на вывод.
Davapet14 уровень, Киев
13 мая, 16:16
Блин... три часа "убил" пока пришло "озарение", что System.lineSeparator() использовать всяко лучше чем "\n"...
sergey17 уровень
11 мая, 09:09
Пытался счтитывать из файла (даже сделал специальный битовый файл) и записывать в массив int, но валидатор ругался на лишние строки, при выводе на экран, в итог после прочтения комментов здесь и нескольких статей получилось такое решение: 1. Создаем переменную типа InputStream которая является ссылкой на InputFileStream с передачей в него адреса размещения обычного текстового файла, где числа идут в столбик, как в условие. 2. Создаём еще одну переменную BufferedReader в которую в качестве входного потока передаем как раз наш InputFileStream. 3. Дальше через цикл пока переменная BufferedReader доступна для считывания через метод ready, записываем только четные числа в массив, перед этим запарсив String в Integer. Дальше стандартная сортировка массива и Вуаля! Всё прошло проверку.
Jenya24 уровень
7 июня, 02:44
результат правильный, а валидатору не понравился ни один пункт^^
finetyro16 уровень
6 мая, 12:21
Не смог решить без старой-доброй обёртки в BufferedReader(InputStreamReader).