Форматированный вывод таблицы через printf!
Иногда нужно вывести таблицу с ровными колонками: имена, цены, количество.
Если просто печатать через
Выводим заголовок таблицы:
Добавляем строки с выравниванием:
Результат в консоли:
🔥 Форматирование делает консольные отчёты и списки аккуратными. Можно выравнивать по левому краю, задавать ширину и количество знаков после запятой.
👉 Java Ready | #практика
Иногда нужно вывести таблицу с ровными колонками: имена, цены, количество.
Если просто печатать через
System.out.println, всё поедет. Решение — метод printf, который поддерживает форматирование, как в C.Выводим заголовок таблицы:
System.out.printf("%-10s %-8s %-6s%n", "Товар", "Цена", "Кол-во");
System.out.println("-------------------------");Добавляем строки с выравниванием:
System.out.printf("%-10s %-8.2f %-6d%n", "Яблоко", 2.5, 10);
System.out.printf("%-10s %-8.2f %-6d%n", "Банан", 3.75, 5);
System.out.printf("%-10s %-8.2f %-6d%n", "Апельсин", 4.1, 12);Результат в консоли:
Товар Цена Кол-во
--------------------------
Яблоко 2.50 10
Банан 3.75 5
Апельсин 4.10 12
🔥 Форматирование делает консольные отчёты и списки аккуратными. Можно выравнивать по левому краю, задавать ширину и количество знаков после запятой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍8🔥6
Для кеша, логов и тестов часто нужны временные файлы и директории. Делать их вручную неудобно, но в Java есть готовые методы.
В этом посте:
• Создадим уникальный файл;
• Создадим временную папку;
• Автоматически удалим папку и файл.
Таким образом можно легко управлять временными ресурсами без лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤10👍4
Парсинг аргументов через picocli
Сегодня создадим готовый CLI с флагами, параметрами и встроенной справкой (
Подключаем:
Теперь определим саму команду, которая будет выполняться при запуске:
Далее добавим флаг, который управляет выводом:
Теперь зададим параметр, который нужно будет передать при вызове:
И наконец, опишем основную логику работы программы:
🔥 Такой подход экономит время, упрощает код и делает консольные утилиты более профессиональными и удобными для пользователя.
👉 Java Ready | #практика
Сегодня создадим готовый CLI с флагами, параметрами и встроенной справкой (
--help, --version) без ручного парсинга.Подключаем:
implementation "info.picocli:picocli:4.7.6"
Теперь определим саму команду, которая будет выполняться при запуске:
@picocli.CommandLine.Command(
name = "hello",
mixinStandardHelpOptions = true
)
class Hello implements Runnable {
Далее добавим флаг, который управляет выводом:
@picocli.CommandLine.Option(
names = "--upper",
description = "Выводить в верхнем регистре"
)
boolean upper;
Теперь зададим параметр, который нужно будет передать при вызове:
@picocli.CommandLine.Parameters(
paramLabel = "NAME",
description = "Имя пользователя"
)
String name;
И наконец, опишем основную логику работы программы:
public void run() {
var msg = "Hello, " + name;
System.out.println(upper ? msg.toUpperCase() : msg);
}}🔥 Такой подход экономит время, упрощает код и делает консольные утилиты более профессиональными и удобными для пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4❤3👎1
Получай объект среды, узнавай число процессоров, следи за памятью, запускай системные процессы и вызывай сборщик мусора. Стандартный API который даёт очень много контроля.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤7👍4👎1
Парсинг HTML через Jsoup!
Собираем данные со страниц: тянем заголовки и ссылки, удобно для ботов, парсеров и быстрых утилит.
Устанавливаем библиотеку:
Извлекаем заголовки h1..h3:
Собираем ссылки с текстами:
Массовый парсинг нескольких страниц:
🔥 Быстро вытягиваем метаданные, заголовки и ссылки: идеально для агрегаторов, мониторинга и автосборки контента.
👉 Java Ready | #практика
Собираем данные со страниц: тянем заголовки и ссылки, удобно для ботов, парсеров и быстрых утилит.
Устанавливаем библиотеку:
implementation "org.jsoup:jsoup:1.17.2"
Извлекаем заголовки h1..h3:
var url = "https://java.com";
var doc = org.jsoup.Jsoup.connect(url).get();
doc.select("h1, h2, h3").forEach(h -> {
System.out.println(h.tagName() + ": " + h.text());
});
// h1: Example Domain
// h2:
Собираем ссылки с текстами:
doc.select("a[href]").forEach(a -> {
var href = a.attr("abs:href"); // абсолютная ссылка
var text = a.text();
System.out.println(text + " -> " + href);
});Массовый парсинг нескольких страниц:
var urls = java.util.List.of(
"https://example.com",
"https://example.org"
);
for (var u : urls) {
var d = org.jsoup.Jsoup.connect(u).get();
System.out.println("== " + u + " ==");
d.select("title").forEach(t -> System.out.println(t.text()));
}
🔥 Быстро вытягиваем метаданные, заголовки и ссылки: идеально для агрегаторов, мониторинга и автосборки контента.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍5🔥4
Чтобы повернуть матрицу, можно обойтись без дополнительного массива. Для этого выполняются два шага: транспонирование и разворот строк.
В этой задаче:
• Задаём квадратную матрицу N×N;
• Меняем местами элементы относительно главной диагонали;
• Разворачиваем каждую строку.
Так поворот выполняется на месте что эффективно и удобно в определённых случаях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍7❤3🤝1
Считаем количество созданных объектов!
Иногда нужно отследить, сколько экземпляров класса было создано. Для этого используют статическое поле, общее для всех объектов.
Создаём класс с счётчиком:
Увеличиваем значение при создании:
Проверяем результат:
🔥 Переменная
👉 Java Ready | #практика
Иногда нужно отследить, сколько экземпляров класса было создано. Для этого используют статическое поле, общее для всех объектов.
Создаём класс с счётчиком:
class User {
static int count = 0;
// общее поле для всех экземпляровУвеличиваем значение при создании:
User() {
count++;
}Проверяем результат:
public static void main(String[] args) {
new User();
new User();
new User();
System.out.println("Создано объектов: " + User.count);
}}🔥 Переменная
static принадлежит классу, а не объекту. Благодаря этому можно считать экземпляры без хранения списка..Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥3