166 примеров программ на Java с решением — задачи для практики

Подборка из 166 практических задач на Java для школьников и студентов: от простого ввода-вывода до структур данных и алгоритмов. Каждая задача содержит готовый код, ожидаемый вывод и пошаговый разбор решения — можно сразу запускать и разбирать построчно.

Все примеры разбиты на 12 категорий: введение, преобразование типов, условия и циклы, функции и методы, массивы, объекты и классы, строки, коллекции, алгоритмы, файлы, потоки ввода-вывода, продвинутые темы. Учись на готовых решениях, пробуй модифицировать код и приноси свои варианты.

  1. Вывод целого числа, введённого пользователем
  2. Сложение двух целых чисел
  3. Умножение двух чисел с плавающей точкой
  4. Нахождение ASCII-кода символа
  5. Вычисление частного и остатка от деления
  6. Обмен значениями двух чисел
  7. Проверка: число чётное или нечётное
  8. Проверка: буква — гласная или согласная
  9. Поиск наибольшего из трёх чисел
  10. Корни квадратного уравнения
  11. Проверка високосного года
  12. Проверка: число положительное или отрицательное
  13. Проверка: символ — буква алфавита или нет
  14. Сумма натуральных чисел
  15. Преобразование char в int
  16. Преобразование int в char
  17. Преобразование long в int
  18. Преобразование int в long
  19. Преобразование boolean в строку
  20. Преобразование строки в boolean
  21. Преобразование строки в int
  22. Преобразование int в строку
  23. Преобразование int в double
  24. Преобразование double в int
  25. Преобразование строки в double
  26. Преобразование double в строку
  27. Преобразование примитивов в объекты-обёртки и обратно
  28. Факториал числа
  29. Таблица умножения
  30. Числа Фибоначчи
  31. Наибольший общий делитель (НОД)
  32. Наименьшее общее кратное (НОК)
  33. Вывод алфавита
  34. Количество цифр в числе
  35. Переворот числа
  36. Возведение числа в степень
  37. Палиндром
  38. Простое число
  39. Простые числа в интервале
  40. Число Армстронга
  41. Числа Армстронга в интервале
  42. Простые числа в диапазоне с помощью функции
  43. Числа Армстронга в диапазоне через функцию
  44. Делители числа
  45. Простой калькулятор на switch...case
  46. Число как сумма двух простых чисел
  47. Сумма натуральных чисел через рекурсию
  48. Факториал числа через рекурсию
  49. НОД (G.C.D) через рекурсию
  50. Двоичное число в десятичное и обратно
  51. Восьмеричное в десятичное и обратно
  52. Двоичное в восьмеричное и обратно
  53. Переворот предложения через рекурсию
  54. Возведение в степень через рекурсию
  55. Умножение матриц через функцию
  56. Сложение комплексных чисел через класс и функцию
  57. Передача лямбда-выражения как аргумента метода
  58. Передача результата одного метода в другой метод
  59. Измерение времени выполнения методов
  60. Вызов одного конструктора из другого
  61. Приватные конструкторы
  62. Разница между двумя моментами времени
  63. Среднее арифметическое массива
  64. Поиск наибольшего элемента массива
  65. Вычисление стандартного отклонения
  66. Сложение двух матриц
  67. Умножение двух матриц
  68. Транспонирование матрицы
  69. Вывод массива на экран
  70. Объединение двух массивов
  71. Проверка наличия значения в массиве
  72. Преобразование массива в Set (HashSet) и обратно
  73. Определение класса объекта
  74. Создание enum-класса
  75. Печать объекта класса
  76. Создание собственного исключения
  77. Создание неизменяемого класса
  78. Доступ к приватным полям класса
  79. Множественное наследование
  80. Простые и сложные проценты
  81. Итерация по enum
  82. Проверка дня рождения
  83. Частота символа в строке
  84. Количество гласных и согласных в предложении
  85. Сортировка элементов в лексикографическом (словарном) порядке
  86. Удаление всех пробелов из строки
  87. Преобразование символа в строку и обратно
  88. Проверка строки на пустоту или null
  89. Сравнение строк
  90. Проверка двух строк на анаграммы
  91. Все перестановки строки
  92. Создание случайных строк
  93. Очистка StringBuffer
  94. Заглавная первая буква каждого слова в строке
  95. Перебор символов строки
  96. Разница между оператором == и методом equals() для String
  97. Использование switch со строками
  98. Проверка, содержит ли строка подстроку
  99. Проверка, что строка — корректная перетасовка двух строк
  100. Проверка строки на числовое значение
  101. Объединение двух списков
  102. Преобразование списка в массив и наоборот
  103. Преобразование Map (HashMap) в List
  104. Сортировка Map по значениям
  105. Сортировка ArrayList пользовательских объектов по свойству
  106. Сортировка Map по ключам
  107. Реализация LinkedList
  108. Реализация структуры данных Стек
  109. Реализация структуры данных Очередь
  110. Получение среднего элемента LinkedList за одну итерацию
  111. Преобразование LinkedList в массив и наоборот
  112. Преобразование ArrayList в строку и наоборот
  113. Итерация по ArrayList
  114. Итерация по HashMap
  115. Итерация по Set
  116. Объединение двух списков
  117. Обновление значения HashMap по ключу
  118. Удаление дубликатов из ArrayList
  119. Получение ключа из HashMap по значению
  120. Поиск цикла в LinkedList
  121. Объединение (union) двух множеств
  122. Пересечение (intersection) двух множеств
  123. Разность (difference) двух множеств
  124. Проверка, является ли множество подмножеством другого
  125. Передача ArrayList в функцию как аргумент
  126. Итерация по ArrayList с помощью лямбда-выражения
  127. Удаление элемента из LinkedList
  128. Добавление элементов в LinkedList
  129. Доступ к элементам LinkedList
  130. Сортировка пузырьком
  131. Быстрая сортировка
  132. Сортировка слиянием
  133. Двоичный поиск
  134. Создание и запись в файл
  135. Чтение содержимого файла построчно
  136. Удаление файла
  137. Удаление пустого и непустого каталога
  138. Получение расширения файла
  139. Получение имени файла из абсолютного пути
  140. Получение относительного пути из двух абсолютных
  141. Подсчёт количества строк в файле
  142. Создание строки из содержимого файла
  143. Добавление текста в существующий файл
  144. Преобразование файла в массив байт и обратно
  145. Получение текущего рабочего каталога
  146. Преобразование строки в InputStream
  147. Преобразование InputStream в массив байтов
  148. Загрузка файла как InputStream
  149. Преобразование InputStream в строку
  150. Преобразование OutputStream в строку
  151. Реализация структуры данных «Бинарное дерево»
  152. Прямой обход дерева (preorder)
  153. Обратный обход дерева (postorder)
  154. Симметричный обход дерева (inorder)
  155. Подсчёт количества листьев в дереве
  156. Реализация структуры данных «Граф»
  157. Определение имени и версии операционной системы
  158. Проверка, что хотя бы две из трёх булевых переменных равны true
  159. Перевод миллисекунд в минуты и секунды
  160. Получение текущей даты и времени
  161. Сложение двух дат
  162. Преобразование строки в дату
  163. Округление числа до n знаков после запятой
  164. Преобразование массива байтов в шестнадцатеричную строку
  165. Преобразование stack trace в строку
  166. Поиск элемента enum по строковому значению
  1. Объединение двух списков
  2. Преобразование списка в массив и наоборот
  3. Преобразование Map (HashMap) в List
  4. Сортировка Map по значениям
  5. Сортировка ArrayList пользовательских объектов по свойству
  6. Сортировка Map по ключам
  7. Реализация LinkedList
  8. Реализация структуры данных Стек
  9. Реализация структуры данных Очередь
  10. Получение среднего элемента LinkedList за одну итерацию
  11. Преобразование LinkedList в массив и наоборот
  12. Преобразование ArrayList в строку и наоборот
  13. Итерация по ArrayList
  14. Итерация по HashMap
  15. Итерация по Set
  16. Объединение двух списков
  17. Обновление значения HashMap по ключу
  18. Удаление дубликатов из ArrayList
  19. Получение ключа из HashMap по значению
  20. Поиск цикла в LinkedList
  21. Объединение (union) двух множеств
  22. Пересечение (intersection) двух множеств
  23. Разность (difference) двух множеств
  24. Проверка, является ли множество подмножеством другого
  25. Передача ArrayList в функцию как аргумент
  26. Итерация по ArrayList с помощью лямбда-выражения
  27. Удаление элемента из LinkedList
  28. Добавление элементов в LinkedList
  29. Доступ к элементам LinkedList