166 примеров программ на Java с решением — задачи для практики
Подборка из 166 практических задач на Java для школьников и студентов: от простого ввода-вывода до структур данных и алгоритмов. Каждая задача содержит готовый код, ожидаемый вывод и пошаговый разбор решения — можно сразу запускать и разбирать построчно.
Все примеры разбиты на 12 категорий: введение, преобразование типов, условия и циклы, функции и методы, массивы, объекты и классы, строки, коллекции, алгоритмы, файлы, потоки ввода-вывода, продвинутые темы. Учись на готовых решениях, пробуй модифицировать код и приноси свои варианты.
- Вывод целого числа, введённого пользователем
- Сложение двух целых чисел
- Умножение двух чисел с плавающей точкой
- Нахождение ASCII-кода символа
- Вычисление частного и остатка от деления
- Обмен значениями двух чисел
- Проверка: число чётное или нечётное
- Проверка: буква — гласная или согласная
- Поиск наибольшего из трёх чисел
- Корни квадратного уравнения
- Проверка високосного года
- Проверка: число положительное или отрицательное
- Проверка: символ — буква алфавита или нет
- Сумма натуральных чисел
- Преобразование char в int
- Преобразование int в char
- Преобразование long в int
- Преобразование int в long
- Преобразование boolean в строку
- Преобразование строки в boolean
- Преобразование строки в int
- Преобразование int в строку
- Преобразование int в double
- Преобразование double в int
- Преобразование строки в double
- Преобразование double в строку
- Преобразование примитивов в объекты-обёртки и обратно
- Факториал числа
- Таблица умножения
- Числа Фибоначчи
- Наибольший общий делитель (НОД)
- Наименьшее общее кратное (НОК)
- Вывод алфавита
- Количество цифр в числе
- Переворот числа
- Возведение числа в степень
- Палиндром
- Простое число
- Простые числа в интервале
- Число Армстронга
- Числа Армстронга в интервале
- Простые числа в диапазоне с помощью функции
- Числа Армстронга в диапазоне через функцию
- Делители числа
- Простой калькулятор на switch...case
- Число как сумма двух простых чисел
- Сумма натуральных чисел через рекурсию
- Факториал числа через рекурсию
- НОД (G.C.D) через рекурсию
- Двоичное число в десятичное и обратно
- Восьмеричное в десятичное и обратно
- Двоичное в восьмеричное и обратно
- Переворот предложения через рекурсию
- Возведение в степень через рекурсию
- Умножение матриц через функцию
- Сложение комплексных чисел через класс и функцию
- Передача лямбда-выражения как аргумента метода
- Передача результата одного метода в другой метод
- Измерение времени выполнения методов
- Вызов одного конструктора из другого
- Приватные конструкторы
- Разница между двумя моментами времени
- Среднее арифметическое массива
- Поиск наибольшего элемента массива
- Вычисление стандартного отклонения
- Сложение двух матриц
- Умножение двух матриц
- Транспонирование матрицы
- Вывод массива на экран
- Объединение двух массивов
- Проверка наличия значения в массиве
- Преобразование массива в Set (HashSet) и обратно
- Определение класса объекта
- Создание enum-класса
- Печать объекта класса
- Создание собственного исключения
- Создание неизменяемого класса
- Доступ к приватным полям класса
- Множественное наследование
- Простые и сложные проценты
- Итерация по enum
- Проверка дня рождения
- Частота символа в строке
- Количество гласных и согласных в предложении
- Сортировка элементов в лексикографическом (словарном) порядке
- Удаление всех пробелов из строки
- Преобразование символа в строку и обратно
- Проверка строки на пустоту или null
- Сравнение строк
- Проверка двух строк на анаграммы
- Все перестановки строки
- Создание случайных строк
- Очистка StringBuffer
- Заглавная первая буква каждого слова в строке
- Перебор символов строки
- Разница между оператором == и методом equals() для String
- Использование switch со строками
- Проверка, содержит ли строка подстроку
- Проверка, что строка — корректная перетасовка двух строк
- Проверка строки на числовое значение
- Объединение двух списков
- Преобразование списка в массив и наоборот
- Преобразование Map (HashMap) в List
- Сортировка Map по значениям
- Сортировка ArrayList пользовательских объектов по свойству
- Сортировка Map по ключам
- Реализация LinkedList
- Реализация структуры данных Стек
- Реализация структуры данных Очередь
- Получение среднего элемента LinkedList за одну итерацию
- Преобразование LinkedList в массив и наоборот
- Преобразование ArrayList в строку и наоборот
- Итерация по ArrayList
- Итерация по HashMap
- Итерация по Set
- Объединение двух списков
- Обновление значения HashMap по ключу
- Удаление дубликатов из ArrayList
- Получение ключа из HashMap по значению
- Поиск цикла в LinkedList
- Объединение (union) двух множеств
- Пересечение (intersection) двух множеств
- Разность (difference) двух множеств
- Проверка, является ли множество подмножеством другого
- Передача ArrayList в функцию как аргумент
- Итерация по ArrayList с помощью лямбда-выражения
- Удаление элемента из LinkedList
- Добавление элементов в LinkedList
- Доступ к элементам LinkedList
- Сортировка пузырьком
- Быстрая сортировка
- Сортировка слиянием
- Двоичный поиск
- Создание и запись в файл
- Чтение содержимого файла построчно
- Удаление файла
- Удаление пустого и непустого каталога
- Получение расширения файла
- Получение имени файла из абсолютного пути
- Получение относительного пути из двух абсолютных
- Подсчёт количества строк в файле
- Создание строки из содержимого файла
- Добавление текста в существующий файл
- Преобразование файла в массив байт и обратно
- Получение текущего рабочего каталога
- Преобразование строки в InputStream
- Преобразование InputStream в массив байтов
- Загрузка файла как InputStream
- Преобразование InputStream в строку
- Преобразование OutputStream в строку
- Реализация структуры данных «Бинарное дерево»
- Прямой обход дерева (preorder)
- Обратный обход дерева (postorder)
- Симметричный обход дерева (inorder)
- Подсчёт количества листьев в дереве
- Реализация структуры данных «Граф»
- Определение имени и версии операционной системы
- Проверка, что хотя бы две из трёх булевых переменных равны true
- Перевод миллисекунд в минуты и секунды
- Получение текущей даты и времени
- Сложение двух дат
- Преобразование строки в дату
- Округление числа до n знаков после запятой
- Преобразование массива байтов в шестнадцатеричную строку
- Преобразование stack trace в строку
- Поиск элемента enum по строковому значению
- Вывод целого числа, введённого пользователем
- Сложение двух целых чисел
- Умножение двух чисел с плавающей точкой
- Нахождение ASCII-кода символа
- Вычисление частного и остатка от деления
- Обмен значениями двух чисел
- Проверка: число чётное или нечётное
- Проверка: буква — гласная или согласная
- Поиск наибольшего из трёх чисел
- Корни квадратного уравнения
- Проверка високосного года
- Проверка: число положительное или отрицательное
- Проверка: символ — буква алфавита или нет
- Сумма натуральных чисел
- Преобразование char в int
- Преобразование int в char
- Преобразование long в int
- Преобразование int в long
- Преобразование boolean в строку
- Преобразование строки в boolean
- Преобразование строки в int
- Преобразование int в строку
- Преобразование int в double
- Преобразование double в int
- Преобразование строки в double
- Преобразование double в строку
- Преобразование примитивов в объекты-обёртки и обратно
- Факториал числа
- Таблица умножения
- Числа Фибоначчи
- Наибольший общий делитель (НОД)
- Наименьшее общее кратное (НОК)
- Вывод алфавита
- Количество цифр в числе
- Переворот числа
- Возведение числа в степень
- Палиндром
- Простое число
- Простые числа в интервале
- Число Армстронга
- Числа Армстронга в интервале
- Простые числа в диапазоне с помощью функции
- Числа Армстронга в диапазоне через функцию
- Делители числа
- Простой калькулятор на switch...case
- Число как сумма двух простых чисел
- Сумма натуральных чисел через рекурсию
- Факториал числа через рекурсию
- НОД (G.C.D) через рекурсию
- Двоичное число в десятичное и обратно
- Восьмеричное в десятичное и обратно
- Двоичное в восьмеричное и обратно
- Переворот предложения через рекурсию
- Возведение в степень через рекурсию
- Умножение матриц через функцию
- Сложение комплексных чисел через класс и функцию
- Передача лямбда-выражения как аргумента метода
- Передача результата одного метода в другой метод
- Измерение времени выполнения методов
- Вызов одного конструктора из другого
- Приватные конструкторы
- Разница между двумя моментами времени
- Среднее арифметическое массива
- Поиск наибольшего элемента массива
- Вычисление стандартного отклонения
- Сложение двух матриц
- Умножение двух матриц
- Транспонирование матрицы
- Вывод массива на экран
- Объединение двух массивов
- Проверка наличия значения в массиве
- Преобразование массива в Set (HashSet) и обратно
- Частота символа в строке
- Количество гласных и согласных в предложении
- Сортировка элементов в лексикографическом (словарном) порядке
- Удаление всех пробелов из строки
- Преобразование символа в строку и обратно
- Проверка строки на пустоту или null
- Сравнение строк
- Проверка двух строк на анаграммы
- Все перестановки строки
- Создание случайных строк
- Очистка StringBuffer
- Заглавная первая буква каждого слова в строке
- Перебор символов строки
- Разница между оператором == и методом equals() для String
- Использование switch со строками
- Проверка, содержит ли строка подстроку
- Проверка, что строка — корректная перетасовка двух строк
- Проверка строки на числовое значение
- Объединение двух списков
- Преобразование списка в массив и наоборот
- Преобразование Map (HashMap) в List
- Сортировка Map по значениям
- Сортировка ArrayList пользовательских объектов по свойству
- Сортировка Map по ключам
- Реализация LinkedList
- Реализация структуры данных Стек
- Реализация структуры данных Очередь
- Получение среднего элемента LinkedList за одну итерацию
- Преобразование LinkedList в массив и наоборот
- Преобразование ArrayList в строку и наоборот
- Итерация по ArrayList
- Итерация по HashMap
- Итерация по Set
- Объединение двух списков
- Обновление значения HashMap по ключу
- Удаление дубликатов из ArrayList
- Получение ключа из HashMap по значению
- Поиск цикла в LinkedList
- Объединение (union) двух множеств
- Пересечение (intersection) двух множеств
- Разность (difference) двух множеств
- Проверка, является ли множество подмножеством другого
- Передача ArrayList в функцию как аргумент
- Итерация по ArrayList с помощью лямбда-выражения
- Удаление элемента из LinkedList
- Добавление элементов в LinkedList
- Доступ к элементам LinkedList
- Создание и запись в файл
- Чтение содержимого файла построчно
- Удаление файла
- Удаление пустого и непустого каталога
- Получение расширения файла
- Получение имени файла из абсолютного пути
- Получение относительного пути из двух абсолютных
- Подсчёт количества строк в файле
- Создание строки из содержимого файла
- Добавление текста в существующий файл
- Преобразование файла в массив байт и обратно
- Получение текущего рабочего каталога
- Реализация структуры данных «Бинарное дерево»
- Прямой обход дерева (preorder)
- Обратный обход дерева (postorder)
- Симметричный обход дерева (inorder)
- Подсчёт количества листьев в дереве
- Реализация структуры данных «Граф»
- Определение имени и версии операционной системы
- Проверка, что хотя бы две из трёх булевых переменных равны true
- Перевод миллисекунд в минуты и секунды
- Получение текущей даты и времени
- Сложение двух дат
- Преобразование строки в дату
- Округление числа до n знаков после запятой
- Преобразование массива байтов в шестнадцатеричную строку
- Преобразование stack trace в строку
- Поиск элемента enum по строковому значению