Вместо ручных вычислений через миллисекунды можно использовать понятный и безопасный API, который позволяет создавать, изменять и сравнивать промежутки времени. Это делает код читаемым и избавляет от ошибок в вычислениях.
Duration особенно полезен для таймеров, измерения производительности и обработки задержек. Работа с временными интервалами становится простой и предсказуемой благодаря современному API.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥4🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Это большой русскоязычный портал для программистов, где регулярно публикуются статьи, гайды и практические разборы по разным технологиям. В разделе Java можно найти материалы по разработке приложений, алгоритмам, работе с инструментами и разбору реальных задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥8👍7
Создаём игру “Камень, ножницы, бумага”
Одна из самых простых и понятных игр для новичков:
игрок вводит свой выбор, компьютер генерирует случайный ход, а программа определяет победителя.
Варианты ходов:
Считываем выбор игрока:
Компьютер выбирает случайный вариант:
Показываем выбор компьютера:
Сравниваем ходы:
Проверяем победу игрока:
Иначе побеждает компьютер:
Отличная мини-игра, чтобы потренировать: ввод данных, массивы, случайные числа и условия.
👉 Java Ready | #совет
Одна из самых простых и понятных игр для новичков:
игрок вводит свой выбор, компьютер генерирует случайный ход, а программа определяет победителя.
Варианты ходов:
String[] moves = {"камень", "ножницы", "бумага"};Считываем выбор игрока:
System.out.print("Ваш ход: ");
String user = sc.nextLine().toLowerCase();Компьютер выбирает случайный вариант:
String bot = moves[(int) (Math.random() * moves.length)];
Показываем выбор компьютера:
System.out.println("Компьютер выбрал: " + bot);Сравниваем ходы:
if (user.equals(bot)) {
System.out.println("Ничья");
}Проверяем победу игрока:
else if (
user.equals("камень") && bot.equals("ножницы") ||
user.equals("ножницы") && bot.equals("бумага") ||
user.equals("бумага") && bot.equals("камень")
) {
System.out.println("Вы победили!");
}
Иначе побеждает компьютер:
else {
System.out.println("Компьютер победил!");
}Отличная мини-игра, чтобы потренировать: ввод данных, массивы, случайные числа и условия.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍5🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Это учебный курс с кодом и задачами. Внутри разобраны ключевые темы Java: коллекции, многопоточность, ввод-вывод, работа с файлами, структуры данных и другие вещи, которые используются в реальной разработке. Главная фишка — много практики.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤8👍8
Создаём Крестики-Нолики!
В итоге мы получим реальную игру: поле 3×3, два игрока, проверка победы и ничьи. Игроки будут вводить координаты, а программа — валидировать ход и обновлять поле.
Создаём поле и текущего игрока:
Функция вывода поля:
Проверка победы (строки, колонки, диагонали):
Проверка ничьи (нет пустых клеток):
Основной игровой цикл:
Проверяем корректность хода:
Делаем ход и проверяем состояние игры:
Меняем игрока:
В итоге получаем полноценную игру: ходы, проверка ошибок, победа и ничья всё работает как на бумаге.
👉 Java Ready | #совет
В итоге мы получим реальную игру: поле 3×3, два игрока, проверка победы и ничьи. Игроки будут вводить координаты, а программа — валидировать ход и обновлять поле.
Создаём поле и текущего игрока:
char[][] b = {
{' ', ' ', ' '},
{' ', ' ', ' '},
{' ', ' ', ' '}
};
char player = 'X';Функция вывода поля:
void print() {
for (int i = 0; i < 3; i++) {
System.out.println(" " + b[i][0] + " | " + b[i][1] + " | " + b[i][2]);
if (i < 2) System.out.println("---+---+---");
}
}Проверка победы (строки, колонки, диагонали):
boolean win(char p) {
for (int i = 0; i < 3; i++)
if ((b[i][0]==p && b[i][1]==p && b[i][2]==p) ||
(b[0][i]==p && b[1][i]==p && b[2][i]==p))
return true;
return (b[0][0]==p && b[1][1]==p && b[2][2]==p) ||
(b[0][2]==p && b[1][1]==p && b[2][0]==p);
}Проверка ничьи (нет пустых клеток):
boolean draw() {
for (var r : b)
for (var c : r)
if (c == ' ') return false;
return true;
}Основной игровой цикл:
var sc = new java.util.Scanner(System.in);
while (true) {
print();
System.out.print("Игрок " + player + " (строка и столбец 1-3): ");
int r = sc.nextInt() - 1;
int c = sc.nextInt() - 1;
Проверяем корректность хода:
if (r < 0 || r > 2 || c < 0 || c > 2 || b[r][c] != ' ') {
System.out.println("Некорректный ход!");
continue;
}Делаем ход и проверяем состояние игры:
b[r][c] = player;
if (win(player)) {
print();
System.out.println("Победил " + player + "!");
break;
}
if (draw()) {
print();
System.out.println("Ничья!");
break;
}
Меняем игрока:
player = (player == 'X') ? 'O' : 'X';
}
sc.close();
В итоге получаем полноценную игру: ходы, проверка ошибок, победа и ничья всё работает как на бумаге.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Это образовательный портал с понятными объяснениями. Здесь разобраны: синтаксис, коллекции, потоки, IO, а также полноценные гайды по Spring, Spring Boot и REST-разработке. Статьи короткие, с примерами, каждая тема разбивается на отдельные блоки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤8🔥7
Приложения работают в разных странах и культурах, где формат дат, чисел и текста отличается. Locale позволяет учитывать эти особенности и автоматически подстраивать вывод под пользователя без ручной логики.
Использование локалей делает приложение универсальным и готовым к масштабированию. Это шаг от “работает у меня” к полноценному продукту, который корректно ведёт себя в любой стране.Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥5🤝1
Например, любой HTTP-запрос сначала попадает в центральный обработчик, затем система находит нужный контроллер и пропускает запрос через цепочку перехватчиков.
На картинке — полный путь запроса: от получения до формирования ответа и завершения обработки.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍9🔥5
Игра “Угадай число”
Это одна из лучших задач для новичков, потому что здесь сразу используется всё базовое, ввод данных, случайные числа, циклы и условия.
Генерируем случайное число:
Считываем число от игрока:
Основной игровой цикл:
Если число меньше:
Если число больше:
Запрашиваем новую попытку:
Победа:
Такие задачи помогают быстро понять, как работает логика программы и как управлять её поведением.
👉 Java Ready | #совет
Это одна из лучших задач для новичков, потому что здесь сразу используется всё базовое, ввод данных, случайные числа, циклы и условия.
Генерируем случайное число:
int target = (int) (Math.random() * 100) + 1;
Считываем число от игрока:
System.out.print("Ваш вариант: ");
int guess = sc.nextInt();Основной игровой цикл:
while (guess != target) {Если число меньше:
if (guess < target) {
System.out.println("Больше ↑");
}Если число больше:
else {
System.out.println("Меньше ↓");
}Запрашиваем новую попытку:
guess = sc.nextInt();
}
Победа:
System.out.println("Угадал! 🎉");Такие задачи помогают быстро понять, как работает логика программы и как управлять её поведением.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Это подборка всего, что используется в Java-разработке: фреймворки, библиотеки, инструменты, базы данных, networking, тестирование и многое другое. Cтруктурированный каталог, где можно быстро найти нужную технологию под любую задачу. Материалы разбиты по категориям: backend-разработка, работа с БД, интеграции, безопасность и даже машинное обучение.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍9🔥7
Валидатор JSON — проверяем, корректный ли JSON!
Иногда приходит JSON от пользователя или API, и он может быть сломан. Важно уметь проверить его корректность до обработки.
Сделаем простой валидатор: пытаемся распарсить и ловим ошибку.
Добавляем зависимость Jackson:
Создаём объект для парсинга JSON:
Пишем функцию проверки JSON:
Проверяем разные строки:
Можно вывести сообщение об ошибке:
Теперь ты можешь проверять JSON перед обработкой и не ловить краши. Полезно для API, конфигов и пользовательского ввода.
👉 Java Ready | #практика
Иногда приходит JSON от пользователя или API, и он может быть сломан. Важно уметь проверить его корректность до обработки.
Сделаем простой валидатор: пытаемся распарсить и ловим ошибку.
Добавляем зависимость Jackson:
implementation "com.fasterxml.jackson.core:jackson-databind:2.17.1"
Создаём объект для парсинга JSON:
var mapper = new com.fasterxml.jackson.databind.ObjectMapper();
Пишем функцию проверки JSON:
boolean isValid(String json) {
try {
mapper.readTree(json);
return true;
} catch (Exception e) {
return false;
}
}Проверяем разные строки:
System.out.println(isValid("{\"name\":\"Alice\"}")); // true
System.out.println(isValid("{name: Alice}")); // falseМожно вывести сообщение об ошибке:
try {
mapper.readTree("{name: Alice}");
} catch (Exception e) {
System.out.println("Ошибка JSON: " + e.getMessage());
}Теперь ты можешь проверять JSON перед обработкой и не ловить краши. Полезно для API, конфигов и пользовательского ввода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Например, Imperative Programming описывает программу как последовательность шагов, которые изменяют состояние, а Object-Oriented Programming строит код вокруг объектов и классов.
На картинке — 4 важные парадигмы программирования, которые используются в современных языках.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥8👍6🤝1
Хочешь фильтрацию, преобразование, группировку и сортировку за одну строчку?
Используй .stream(), .filter(), .map(), .collect() и другие мощные методы о которых мы рассказали в карточках.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8❤4🤝1