/
digit
/
java-oop-collections-list
Обзор
Документация
Войти
/
digit
/
java-oop-collections-list
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Main.java
155 строк
6 KB
digit
Create: Main.java, Task.java
14 июл 2026, 16:48
Верифицирован
14 июл 2026, 16:48
09a8821
Код
Авторство
О чём код?
import java.util.Scanner; import java.util.List; import java.util.ArrayList; import java.util.Iterator; public class Main { public static void main(String[] args) { List<Task> tasks = new ArrayList<>(); boolean isRunning = true; Scanner scanner = new Scanner(System.in); while (isRunning) { // главный цикл программы printMenu(); isRunning = chooseOption(tasks, scanner); } scanner.close(); System.out.print("\nПрограмма завершена\n"); } public static void printMenu() { System.out.print(""" Выберите операцию: 0. Выход из программы 1. Добавить дело 2. Показать дела 3. Удалить дело по номеру 4. Удалить дело по названию 5. Удалить дела по ключевому слову Ваш выбор:\s"""); } public static boolean chooseOption(List<Task> tasks, Scanner scanner) { switch (scanner.nextLine()) { case "0": return false; // выход из цикла (из программы) case "1": addTask(tasks, scanner); // добавление нового дела в список showTasks(tasks); break; case "2": System.out.println(); showTasks(tasks); // вывод всех дел с нумерацией break; case "3": System.out.println(); deleteTaskByIndex(tasks, scanner); // удаление дела по его номеру showTasks(tasks); break; case "4": System.out.println(); deleteTaskByName(tasks, scanner); // удаление дела по его точному тексту (первого по списку) showTasks(tasks); break; case "5": System.out.println(); deleteTasksByKeyword(tasks, scanner); // удаление дел по ключевому слову (всех с ключевым словом) showTasks(tasks); break; default: System.out.print("\nНекорректный ввод\n\n"); } return true; // продолжение цикла } public static void addTask(List<Task> tasks, Scanner scanner) { System.out.print("\nВведите название задачи: \n"); tasks.add(new Task(scanner.nextLine())); System.out.println("Добавлено!"); } public static void showTasks(List<Task> tasks) { if (tasks.isEmpty()) { System.out.println("[Список дел пуст]"); } else { System.out.println("Ваш список дел: "); for (int i = 0; i < tasks.size(); i++) { System.out.printf("%d. %s\n", i, tasks.get(i).getName()); } } System.out.println(); } public static void deleteTaskByIndex(List<Task> tasks, Scanner scanner) { if (tasks.isEmpty()) { return; } System.out.print("Введите номер для удаления: "); boolean isInputValid = false; while (!isInputValid) { try { // для обработки NumberFormatException и IndexOutOfBoundsException от parseInt() int index = Integer.parseInt(scanner.nextLine()); tasks.remove(index); isInputValid = true; } catch (NumberFormatException e) { System.out.print("Некорректный ввод: введите число\nПовторите ввод: "); } catch (IndexOutOfBoundsException e) { System.out.print("Некорректный ввод: число вне границ массива\nПовторите ввод: "); } } System.out.println("Удалено!"); } public static void deleteTaskByName(List<Task> tasks, Scanner scanner) { if (tasks.isEmpty()) { return; } System.out.print("Введите задачу для удаления: "); boolean isInputValid = false; while (!isInputValid) { String input = scanner.nextLine(); for (Iterator<Task> i = tasks.iterator(); i.hasNext();) { if (input.equals(i.next().getName())) { i.remove(); // удаление одной задачи итератором isInputValid = true; break; } } if (!isInputValid) { System.out.print("Задача не найдена\nПовторите ввод: "); } } System.out.print("Удалено!\n"); } public static void deleteTasksByKeyword(List<Task> tasks, Scanner scanner) { if (tasks.isEmpty()) { return; } System.out.print("Введите ключевое слово для удаления задач: "); int count = 0; boolean isInputValid = false; while (!isInputValid) { String input = scanner.nextLine(); for (int i = tasks.size() - 1; i >= 0; i--) { if (tasks.get(i).getName().contains(input)) { tasks.remove(i); // удаление множества задач обратным циклом count++; isInputValid = true; } } if (!isInputValid) { System.out.print("Задачи не найдены\nПовторите ввод ключевого слова: "); } } char c = chooseCharacter(count); // выбор окончания слова "задача" ('а'/'и'/' ') System.out.printf("Удалено %d задач%c!\n", count, c); } public static char chooseCharacter (int count) { return switch (count) { case 1 -> 'а'; case 2, 3, 4 -> 'и'; default -> ' '; }; } }