JavaRush /Курсы /Java Core /Задачи на FileInputStream, FileOutputStream

Задачи на FileInputStream, FileOutputStream

Java Core
8 уровень , 3 лекция
Открыта

— Привет, Амиго!

10
Задача
Java Core, 8 уровень, 3 лекция
Недоступна
Максимальный байт
Ввести с консоли имя файла. Найти максимальный байт в файле, вывести его на экран. Закрыть поток ввода-вывода.
5
Задача
Java Core, 8 уровень, 3 лекция
Недоступна
Минимальный байт
Ввести с консоли имя файла. Найти минимальный байт в файле, вывести его на экран. Закрыть поток ввода-вывода.
20
Задача
Java Core, 8 уровень, 3 лекция
Недоступна
Самые частые байты
Ввести с консоли имя файла. Найти байт или байты с максимальным количеством повторов. Вывести их на экран через пробел. Закрыть поток ввода-вывода.
10
Задача
Java Core, 8 уровень, 3 лекция
Недоступна
Самые редкие байты
Ввести с консоли имя файла. Найти байт или байты с минимальным количеством повторов. Вывести их на экран через пробел. Закрыть поток ввода-вывода.
10
Задача
Java Core, 8 уровень, 3 лекция
Недоступна
Сортировка байт
Ввести с консоли имя файла. Считать все байты из файла. Не учитывая повторений - отсортировать их по байт-коду в возрастающем порядке. Вывести на экран. Закрыть поток ввода-вывода. Пример байт входного файла: 44 83 44 Пример вывода: 44 83
Комментарии (456)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
evggenn Уровень 33
24 октября 2025
Посчитать кол-во букв англ. алфавита.... Посчитал), но не принимают.

while ((charRead = reader.read()) != -1) {
            if (Character.isLetter(charRead)) {
                result += 1;
            }
        }
пока 2 сомнительных задачи...
evggenn Уровень 33
24 октября 2025
Прайсы 2. Не понял требование из-за которого мой код не проходил - Товар с измененными данными должен находиться на той же строке в файле. Имеется ввиду, что если описание занимало 2 перевода строки, то обновленное описание тоже должно иметь 2 энтера? Иначе, у меня все соответствовало условиям, т.е. моя обновленная строка всегда начиналась на той же строке, только у меня один перевод строки в конце. Если входной файл такой

19846   Шорты пляжные
синие           159.00  12  
198479  Шорты пляжные черные с
рисунко173.00    17
19847983Куртка для сноубордистов,
разм10173.991234
то после запуска с таким параметром -u 198479 "Труселя чорные чоткие" 200 2 он становился таким

19846   Шорты пляжные
синие           159.00  12  
198479  Труселя    чорные чоткие      200     2   
19847983Куртка для сноубордистов,
разм10173.991234
Что тут неправильного?) (мой измененный товар находится на той же строке в файле)
Anonymous #3585174 Уровень 33
2 сентября 2025
Like
Дмитрий Уровень 49
6 июля 2025
А зато все основные коллекции вспомнил 😁 ("Самые частые байты"): try (FileInputStream fis = new FileInputStream(new Scanner(System.in).nextLine())) { // Считываем все байты из файла в список List<Byte> list = new ArrayList<>(); while (fis.available() > 0) list.add((byte) fis.read()); // Понимаем из каких уникальных элементов/байтов состоит наш список/файл Set<Byte> byteSet = new HashSet<>(list); /* Выясняем сколько раз каждый из элементов встречается в списке/файле и удобненько сохраняем эту инфу в мапу */ HashMap<Byte, Integer> map = new HashMap<>(); for(Byte b: byteSet){ map.put(b, Collections.frequency(list,b)); } // Выясняем максимальное количество повторов элемента int maxValue = Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getValue(); // Выводим те элементы, количество повторов которых соответствует максимальному map.entrySet().stream() .filter(e -> e.getValue().equals(maxValue)) .forEach(e -> System.out.print(e.getKey() + " ")); }
9 июня 2025
Последнюю задачу решил через старый добрый ArrayList с проверкой перед добавлением list.contains(i). Потом две строчки Collections.sort(list); list.forEach(s -> System.out.print(s+ " "));
Eternal Fire Уровень 30
7 июля 2025
всегда заглядываю в import задач, конкретно в этой как раз был TreeSet, резко пришлось вспоминать, что это такое и использовать его )
Kostas Уровень 30 Expert
3 декабря 2024
Кстати, как могли заметить, в задачах выводятся ASCII коды символов (e.g. 97), а не сами символы(e.g. a). И в правильных решениях - тоже. А сами символы мне удалось вывести, например, так: for (Integer resultItem : resultList) { // System.out.print(resultItem + " "); char chr = (char) resultItem.intValue(); System.out.print(chr + " "); }
{Java_Shark} Уровень 36
20 ноября 2024
++
Dantes Уровень 1
20 сентября 2024
Put in the work, put in the hours and take what's ours
Igoreek Уровень 43
13 августа 2024
"Самые частые байты" - лютая задача, решил через HashMap, п.3 учитывайте что максимальное количество повторов разных байт может быть == и вот тогда их нужно вывести через пробел, т.е в слове МАМА, какая буква встречается чаще всего? 😁 вот эти 2 и надо выводить
20 августа 2024
Тоже через HashMap решил за полтора часа. Валидатор долго отказывался принимать по неизвестной мне причине, оптимизировал код и в конце концов принял
Kostas Уровень 30 Expert
4 декабря 2024
Да, мне тоже AI предложил решать через HashMap :))) Но здешнее "правильное решение" мне кажется более элегантным.
CodeMashine Уровень 33
14 января 2025
я через hashMap и стримы -- не пропустил валидатор , переписал стримы на циклы. не пропустил валидатор.
SergeyPavlochev Уровень 29
6 июня 2025
Для юникода предложенное решение не подойдет, поэтому более правильно через Map.
Jump Java Уровень 39
2 августа 2024
Для задачи сортировка байт идеально подходит TreeSet.
G L Уровень 38
20 августа 2024
Так даже в импорте в задаче уже прописан TreeSet. По сути подсказывают и направляют что использовать