From 57ae7e6bcb11b10d64d8591220d98b36e47886b9 Mon Sep 17 00:00:00 2001 From: KamaSK Date: Mon, 19 May 2025 17:17:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8=20=D0=B2=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B5=20TodoAp?= =?UTF-8?q?p.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=20TaskManager=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87,=20=D1=87=D1=82=D0=BE=20=D1=83=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D1=88=D0=B0=D0=B5=D1=82=20=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BA=D1=82=D1=83=D1=80=D1=83=20=D0=BA=D0=BE=D0=B4=D0=B0.=20?= =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=20=D0=B8=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=BD=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BE=20=D0=BD?= =?UTF-8?q?=D0=B8=D1=85.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B2=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B5=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D1=81=D1=87=D0=B5=D1=82=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D1=87.=20=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?tasksCounter=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8F=20taskCount=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BE=D1=82=D1=81=D0=BB=D0=B5=D0=B6=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87.=20=D0=AD?= =?UTF-8?q?=D1=82=D0=BE=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=20=D1=87=D0=B8=D1=82=D0=B0=D0=B5=D0=BC=D0=BE=D1=81=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B8=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D1=83=20=D0=BA=D0=BE=D0=B4=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todo/src/main/java/ru/kamask/pet/Task.java | 20 ++-- todo/src/main/java/ru/kamask/pet/TodoApp.java | 105 +++++++++--------- 2 files changed, 63 insertions(+), 62 deletions(-) diff --git a/todo/src/main/java/ru/kamask/pet/Task.java b/todo/src/main/java/ru/kamask/pet/Task.java index 3c5218b..834ce25 100644 --- a/todo/src/main/java/ru/kamask/pet/Task.java +++ b/todo/src/main/java/ru/kamask/pet/Task.java @@ -6,28 +6,28 @@ class Task { private static int nextId; static int taskCount; - static { - taskCount = 0; - nextId = 0; - } - private int id; private String title; private String description; private boolean completed = false; private LocalDate createdAt; - Task(String title, String description) { - this.title = title; - this.description = description; - }; + static { + taskCount = 0; + nextId = 0; + } { id = ++nextId; createdAt = LocalDate.now(); - ++taskCount; + taskCount++; } + Task(String title, String description) { + this.title = title; + this.description = description; + }; + static void printTotalTasksCreated() { System.out.println("Колличество дел: " + taskCount); } diff --git a/todo/src/main/java/ru/kamask/pet/TodoApp.java b/todo/src/main/java/ru/kamask/pet/TodoApp.java index ff89c79..a18a574 100644 --- a/todo/src/main/java/ru/kamask/pet/TodoApp.java +++ b/todo/src/main/java/ru/kamask/pet/TodoApp.java @@ -4,50 +4,21 @@ import java.util.Scanner; public class TodoApp { + private static TaskManager taskManager; private static Task[] tasks = new Task[10]; + private static int tasksCounter = 0; private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { - /* - * System.out.println("\n\nDeveloper mode:\n\n"); - * - * Task t1 = new Task("Дело тест - t1", ""); - * Task t2 = new Task("Дело тест - t2", ""); - * Task t3 = new Task("Дело тест - t3", ""); - * printAll(t1, t2, t3); - * System.out.println(markTaskCompletedById(new Task[] { t1, t2, t3 }, 2)); - * printAll(t1, t2, t3); - * - * System.out.println("\n\n" + "*".repeat(20) + "\n\n"); - */ + TodoApp app = new TodoApp(); + taskManager = app.new TaskManager(); + + app.run(); - displayMainMenu(); } - private static int requestIntFromInput(String template, int[] allowedInts) { - do { - System.out.print(template); - int input; - do { - if (scanner.hasNextInt()) { - input = scanner.nextInt(); - scanner.nextLine(); - break; - } else { - scanner.next(); - System.out.print("Ошибка: используйте цифры.\nПовторите ввод:"); - } - } while (true); - - for (int i : allowedInts) - if (i == input) - return input; - System.out.print("Ошибка: укажите номер выбранного пункта.\nПовторите ввод:"); - } while (true); - } - - private static void displayMainMenu() { + private void run() { while (true) { Task.printTotalTasksCreated(); String menu = """ @@ -94,13 +65,23 @@ public class TodoApp { System.out.print("\nНпишите описание дела: "); description = scanner.nextLine().trim(); - var task = new Task(title, description); - tasks[Task.taskCount - 1] = task; + taskManager.addTask(new Task(title, description)); + } + + private static void displayTask(Task task) { + task.printInfo(true); + String firstOption = task.getCompleted() ? "[1]Не выполнено" : "[1]Выполнено"; + int input = requestIntFromInput(firstOption + " [0]Главное меню\n\nВвод:", + new int[] { 0, 1 }); + if (input == 1) { + task.toggleCompleted(); + displayTask(task); + } } private static void displayTasks() { - if (Task.taskCount == 0) { + if (tasksCounter == 0) { int input = requestIntFromInput(""" Список дел пуст. @@ -112,7 +93,6 @@ public class TodoApp { if (input == 1) { displayCreateTask(); - displayTasks(); } else System.exit(0); } @@ -124,10 +104,10 @@ public class TodoApp { printAll(tasks); - int[] variantsInput = new int[Task.taskCount + 1]; - for (int i = 0; i < Task.taskCount; i++) + int[] variantsInput = new int[tasksCounter + 1]; + for (int i = 0; i < tasksCounter; i++) variantsInput[i] = tasks[i].getId(); - variantsInput[Task.taskCount] = 0; + variantsInput[tasksCounter] = 0; int input = requestIntFromInput(""" @@ -148,15 +128,26 @@ public class TodoApp { return null; } - private static void displayTask(Task task) { - task.printInfo(true); - String firstOption = task.getCompleted() ? "[1]Не выполнено" : "[1]Выполнено"; - int input = requestIntFromInput(firstOption + " [0]Главное меню\n\nВвод:", - new int[] { 0, 1 }); - if (input == 1) { - task.toggleCompleted(); - displayTask(task); - } + private static int requestIntFromInput(String template, int[] allowedInts) { + do { + System.out.print(template); + int input; + do { + if (scanner.hasNextInt()) { + input = scanner.nextInt(); + scanner.nextLine(); + break; + } else { + scanner.next(); + System.out.print("Ошибка: используйте цифры.\nПовторите ввод:"); + } + } while (true); + + for (int i : allowedInts) + if (i == input) + return input; + System.out.print("Ошибка: укажите номер выбранного пункта.\nПовторите ввод:"); + } while (true); } private static void printAll(Task... tasks) { @@ -175,4 +166,14 @@ public class TodoApp { return false; } + private class TaskManager { + void addTask(Task task) { + tasks[tasksCounter++] = task; + } + + void markCompleted(int id) { + markTaskCompletedById(tasks, id); + } + + } }