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

  • 7
  • Недоступна
Если упорядоченный изоморф не уверен в трезвости другого упорядоченного изоморфа, он просит его пройти простенький тестик: сначала ввести имя файла с консоли, прочитать из него набор чисел, а затем вывести на консоль только четные, отсортированные по возрастанию. Получится?
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (168)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Viktor Kalyniuk14 уровень, Киев
позавчера, 17:19
через FileReader на изичах за минут 5 решил, но валидатор требовал FileInputStream в итоге убил двух зайцев одной переменной. Знаю что дурак но блин.
Александр14 уровень, Казань
четверг, 10:12
Столкнулся со следующей проблемой: Считываю строку с файла, делаю парс в int и получаю exception: т.е. мы не можем из файла строку 5 преобразовать в число. Преобразовал в байты и посмотрел что там:
System.out.println(Arrays.toString(str.getBytes()));
//[-17, -69, -65, 53]
Символ 5 это 53, и в начале файла у нас байты лишнии.
Маркер последовательности байтов или метка порядка байтов (англ. Byte Order Mark, BOM) — специальный символ из стандарта Юникод, вставляемый в начало текстового файла или потока для обозначения того, что в файле (потоке) используется Юникод, а также для косвенного указания кодировки и порядка байтов, с помощью которых символы Юникода были закодированы.
Посмотрел, оказалось файл в формате UTF, когда это произошло не понял, видимо в предыдущем варианте решения задачи, - занимает 29 байт. Создал его в ручную и получил 26 байт. Чтобы от них избавиться, достаточно перед тем, как считывать строку, просто считать этот символ (заглушить)- через
reader.read();
//или
sc.next();
Филипп16 уровень, Минск
30 января, 19:50
Упорядоченные изоморфы наше всё))
Roller17 уровень, Новосибирск
24 января, 14:01
спустя пару дней мучений я таки решил эту задачу с использованием битового потока FileInputStream и BufferedInputStream. Вся загвоздка была в том, что при таком чтении данных, получаешь (int) значения символов в UTF кодировке. Примерный план действий у меня вышел такой: 1) читаешь все символы в файле, приводишь их к типу (char) и записываешь в лист<Character> 2) Потом склеиваешь их в одну строку. Далее эту строку нарезаешь на строки поменьше (в которых содержится каждое число файла) при помощи того самого System.line.separator(). Изначально нарезал без него, но валидатор ругается. 3) строки парсишь в (int) значения и заполняешь ими лист <Integer> 4) сортируешь, отсеиваешь четные, выводишь Конечно при использовании строковых потоков проще получить отдельные строки из файла и сразу начать с пункта 3.
Александр14 уровень, Казань
четверг, 10:22
строковых потоков проще получить отдельные строки
Посмотри выше мой коммент - с чем я столкнулся ) Не совсем проще.
Sergo17 уровень, Санкт-Петербург
13 января, 18:44
Я не совсем понял условие. Нам нужно сначала создать файл, потом записать в него n-чисел, а дальше взять из этого файла числа отсортотировать и выделить четные, затем вывести на экран?
Игорь16 уровень
26 января, 22:34
Как я понял, нужно вручную создать файл с числами. Затем написать программу, которая считает из него эти числа, выделит четные, отсортирует и выведет на экран.
S3R3N1TY20 уровень, Санкт-Петербург
10 января, 21:01
Дам небольшую подсказку, как я обьявил свой блок try, а дальше я просто все считал из файла в arraylist и отсортировал.
try ( BufferedReader br =  new BufferedReader(new InputStreamReader(new FileInputStream(bf.readLine()))))
Также при чтении файла не забудьте проверить условия окончания, если строка null то прекратить. Рекомендую почитать Шилдта - раздел Ввод Вывод
REM17 уровень, Москва
8 января, 23:38
.... я ребенок!, сидел смотрел на розетку и думал, а что будет если туда два гвоздя засунуть?:) но ведь подходят , значит можно:)))) ... очень нравится эта строка, BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); в сквое время выучил ее на изусть, вобщем смотрел на нее , а потом смотрел на валидатор который мне говорил исапользуй ... FileInputStream. В итоге я засунул в место консоли и все заработало... Предполагаю что есть нормальное решение, но зачем платить больше если не видно разницы. Хреновый видимо из меня ученик.:)) если я когда нить стану программистом, весь мой код будет один большой костыль!:)))) (надеюсь я уместно использую понятие костыль) p.s. ... а самое главное что радости столько же , сколько и у ребенка когда получилось!! уряяя работает!!:)) за это я люблю задачки! p.p.s. если засунуть два гвоздя они станут магнитами, пожалуйста, неповтаряйте это, в детстве легче переживается удар током. p.p.p.s надеюсь мой будущий работодатель не увидет моих коментов:)))
Dmytro Zhelezniak20 уровень, Харьков
24 января, 09:35
Ты - гений, мужик!
Вадим22 уровень, Новосибирск
6 января, 13:31
Использовал разделитель "\r\n". Используй System.lineSeparator() в качестве универсального разделителя строк. Но в условии про это не слово! Плюс еще "Программа должна закрывать поток чтения из файла(FileInputStream)." хотя он закрыт...
Виталий Злобин15 уровень, Новосибирск
6 января, 12:15
Вот это прокачка)) Всего эту задачу решили 16094 учеников.
Raye Penber18 уровень
6 января, 01:02
73 попытки