Нужно принять список товаров с ценами и красиво отформатировать их в текстовом чеке. Столбцы выравниваются, итог подсчитывается и округляется.
В этой задаче:
• Создаём класс Item для представления товара
• Выводим чек через System.out.printf()
• Выравниваем по ширине и считаем общую сумму
Это идеально подойдет для POS-прототипов или печати квитанций.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍7❤4
Она включает:
• Особенности функционального стиля в Java начиная с версии 8
• Проблему отсутствия поддержки checked exceptions в стандартных функциональных интерфейсах
• Пример преобразования строкового URL в объект URL без явных циклов и условий
🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7❤4
OCR в Java через Tesseract!
Когда нужно вытащить текст с картинки подключаем
Пример кода:
🔥 Работает для сканов, чеков, экранок; при низком качестве помогает предобработка (ч/б, контраст, кроп по зоне текста).
👉 Java Ready | #практика
Когда нужно вытащить текст с картинки подключаем
Tesseract черезTess4J
. Даём путь к tessdata
и языку, подаём изображение и на выходе получаем распознанную строку.Пример кода:
import net.sourceforge.tess4j.Tesseract;
Tesseract t = new Tesseract();
t.setDatapath("tessdata");
// папка с .traineddata
t.setLanguage("eng");
// язык модели
String text = t.doOCR(new
java.io.File("image.png"));
// входное изображение
System.out.println(text);
// вывод результата
🔥 Работает для сканов, чеков, экранок; при низком качестве помогает предобработка (ч/б, контраст, кроп по зоне текста).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥8❤5
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь ты найдёшь понятные объяснения базовых и продвинутых тем: переменные, условия, классы, коллекции. Всё подкреплено примерами и наглядной структурой.
Интерфейс без отвлекающей рекламы, что особенно приятно при постоянной работе с материалом.
📌 Оставляю ссылочку: programiz.com
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥4
Вместо ручного ввода дат и времени пишем «сегодня в 18» или «через 2 часа». Программа возвращает LocalDateTime в стандартном формате.
В этой задаче:
• Обрабатываем ключевые слова «сегодня», «завтра», «через»
• Для фиксированных дат используем LocalDate и LocalTime
• Для относительных дат прибавляем время через plusHours()
Код можно расширять буквально до бесконечности. Добавить поддержку минут, дней недели или англоязычного ввода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍9❤4👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь ты найдёшь подробные материалы по Java Core, Spring, Hibernate, Microservices и REST API.
Каждый урок сопровождается чистым кодом, пояснениями и структурированной подачей.
📌 Оставляю ссылочку: howtodoinjava.com
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥4
Сохрани строку в буфер через setContents(), вставь с getData() и управляй через Transferable и DataFlavor. Работает на десктопе без сторонних библиотек. Удобно для GUI, утилит, генераторов и CLI-инструментов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍8❤7
❤5👍4🔥4
Автоперезапуск программы при изменении конфига!
Можно настроить программу так, чтобы она сама перезапускалась при изменении конфигурационного файла. Это экономит время при тестах и настройках.
Шаг 1 — создаём watcher:
Шаг 2 — следим за файлом:
Шаг 3 — перезапуск программы:
🔥 Полезно для dev-режима, чтобы изменения в конфиге сразу применялись без ручного рестарта.
👉 Java Ready | #практика
Можно настроить программу так, чтобы она сама перезапускалась при изменении конфигурационного файла. Это экономит время при тестах и настройках.
Шаг 1 — создаём watcher:
WatchService watcher = FileSystems.getDefault().newWatchService();
Paths.get(".").register(watcher, StandardWatchEventKinds.ENTRY_MODIFY);
Шаг 2 — следим за файлом:
WatchKey key = watcher.take();
for (WatchEvent<?> e : key.pollEvents())
if (e.context().toString().equals("config.yml"))
restart();
Шаг 3 — перезапуск программы:
void restart() throws IOException {
Runtime.getRuntime().exec("java -jar myapp.jar");
System.exit(0);
}
🔥 Полезно для dev-режима, чтобы изменения в конфиге сразу применялись без ручного рестарта.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥6👍5
Она включает в себя:
• Создание веб-сервера с нуля, используя только стандартные возможности JDK
• Реализацию гостевой книги с функциями добавления, просмотра и удаления записей
• Встроенные механизмы авторизации и разграничения доступа
• Разработку собственного шаблонизатора и парсера JSON
🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥6👍5