From 5c66a66bfe84aab4b008c877709652a3fc6544df Mon Sep 17 00:00:00 2001 From: KamaSK Date: Mon, 19 May 2025 13:24:34 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BB=D1=8F=20=D0=B8=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20=D0=B2=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=20Task=20=D0=B4=D0=BB=D1=8F=20=D0=BE=D1=82=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=D0=B6=D0=B8=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=B0=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D1=87=20=D0=B8=20=D0=B8=D1=85=20=D0=B8=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D0=B2.=20=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D1=87=20=D0=B2=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B5=20TodoAp?= =?UTF-8?q?p,=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=D1=81=D1=8F=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=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=B5=20taskCount=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=D0=BC=D0=B8.=20=D0=9E?= =?UTF-8?q?=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=B2=D1=8B=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D1=85,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=B0=D1=82=D0=B0=20=D1=81=D0=BE=D0=B7=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todo/src/main/java/ru/kamask/pet/Task.java | 27 ++++++++++++++++--- todo/src/main/java/ru/kamask/pet/TodoApp.java | 20 +++++++------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/todo/src/main/java/ru/kamask/pet/Task.java b/todo/src/main/java/ru/kamask/pet/Task.java index 7d82d48..3c5218b 100644 --- a/todo/src/main/java/ru/kamask/pet/Task.java +++ b/todo/src/main/java/ru/kamask/pet/Task.java @@ -1,15 +1,35 @@ package ru.kamask.pet; +import java.time.LocalDate; + 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(int id, String title, String description) { - this.id = id; + Task(String title, String description) { this.title = title; this.description = description; + }; + + { + id = ++nextId; + createdAt = LocalDate.now(); + ++taskCount; + } + + static void printTotalTasksCreated() { + System.out.println("Колличество дел: " + taskCount); } void printInfo() { @@ -27,6 +47,7 @@ class Task { ────────────────────────────── Номер: %-3d + Дата создания: %s Статус: %s Название: %-20s ------------------------------ @@ -35,7 +56,7 @@ class Task { """; ; String stringCompleted = completed ? "выполнено" : "не выполнено"; - System.out.printf(template, id, stringCompleted, title, description); + System.out.printf(template, id, createdAt, stringCompleted, title, description); } void toggleCompleted() { diff --git a/todo/src/main/java/ru/kamask/pet/TodoApp.java b/todo/src/main/java/ru/kamask/pet/TodoApp.java index 1d97e13..6b71d48 100644 --- a/todo/src/main/java/ru/kamask/pet/TodoApp.java +++ b/todo/src/main/java/ru/kamask/pet/TodoApp.java @@ -5,8 +5,6 @@ import java.util.Scanner; public class TodoApp { private static Task[] tasks = new Task[10]; - private static int nextTaskId = 1; - private static int tasksCounter = 0; private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { @@ -37,6 +35,7 @@ public class TodoApp { private static void displayMainMenu() { while (true) { + Task.printTotalTasksCreated(); String menu = """ ┌──────────────────────────┐ @@ -61,12 +60,11 @@ public class TodoApp { private static void displayCreateTask() { - if (tasksCounter >= 9) { + if (Task.taskCount >= 9) { System.out.println("\nОшибка: Достигнут лимит в 10 дел.\n"); return; } - int id = nextTaskId++; String title; String description; @@ -82,13 +80,13 @@ public class TodoApp { System.out.print("\nНпишите описание дела: "); description = scanner.nextLine().trim(); - var task = new Task(id, title, description); - tasks[tasksCounter++] = task; + var task = new Task(title, description); + tasks[Task.taskCount - 1] = task; } private static void displayTasks() { - if (tasksCounter < 1) { + if (Task.taskCount == 0) { int input = requestIntFromInput(""" Список дел пуст. @@ -105,16 +103,16 @@ public class TodoApp { System.exit(0); } - int[] variantsInput = new int[tasksCounter + 1]; + int[] variantsInput = new int[Task.taskCount + 1]; System.out.println(""" Список дел: """); - for (int i = 0; i < tasksCounter; i++) { + for (int i = 0; i < Task.taskCount; i++) { tasks[i].printInfo(); variantsInput[i] = tasks[i].getId(); } - variantsInput[tasksCounter] = 0; + variantsInput[Task.taskCount] = 0; int input = requestIntFromInput(""" Введите номер дела или 0 для возврата в меню:""", variantsInput); @@ -127,7 +125,7 @@ public class TodoApp { } private static Task getTaskById(int id) { - for (int i = 0; i < tasksCounter; i++) { + for (int i = 0; i < Task.taskCount; i++) { if (tasks[i].getId() == id) return tasks[i]; } From 3197600a75c196a9b96e42451ff97296b50825d1 Mon Sep 17 00:00:00 2001 From: KamaSK Date: Mon, 19 May 2025 14:00:04 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=20printAll=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=D1=8B=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BE=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87?= =?UTF-8?q?=D0=B0=D1=85.=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=91?= =?UTF-8?q?=D0=BD=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=20=D0=B2=20=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=8E.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todo/src/main/java/ru/kamask/pet/TodoApp.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/todo/src/main/java/ru/kamask/pet/TodoApp.java b/todo/src/main/java/ru/kamask/pet/TodoApp.java index 6b71d48..305f120 100644 --- a/todo/src/main/java/ru/kamask/pet/TodoApp.java +++ b/todo/src/main/java/ru/kamask/pet/TodoApp.java @@ -8,6 +8,17 @@ public class TodoApp { 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("\n\n" + "*".repeat(20) + "\n\n"); + */ + displayMainMenu(); } @@ -103,16 +114,18 @@ public class TodoApp { System.exit(0); } - int[] variantsInput = new int[Task.taskCount + 1]; System.out.println(""" Список дел: """); - for (int i = 0; i < Task.taskCount; i++) { - tasks[i].printInfo(); + + printAll(tasks); + + int[] variantsInput = new int[Task.taskCount + 1]; + for (int i = 0; i < Task.taskCount; i++) variantsInput[i] = tasks[i].getId(); - } variantsInput[Task.taskCount] = 0; + int input = requestIntFromInput(""" Введите номер дела или 0 для возврата в меню:""", variantsInput); @@ -143,4 +156,10 @@ public class TodoApp { } } + private static void printAll(Task... tasks) { + for (Task t : tasks) + if (t != null) + t.printInfo(); + } + } From 67abdaefe14f3a11624e8242dcf1c98b9c5907fa Mon Sep 17 00:00:00 2001 From: KamaSK Date: Mon, 19 May 2025 14:41:35 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20markTaskCompletedById?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8=20=D0=BA=D0=B0?= =?UTF-8?q?=D0=BA=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=BF=D0=BE=20=D0=B5=D1=91=20=D0=B8=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D1=83.=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=91=D0=BD=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=20=D0=B2=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=D0=B5=20main=20=D0=B4=D0=BB=D1=8F=20=D0=B4=D0=B5=D0=BC=D0=BE?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D1=8B=20=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0.=20=D0=AD=D1=82=D0=BE?= =?UTF-8?q?=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B0=D0=B5=D1=82=20=D1=83?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=D0=BC=D0=B8=20=D0=B2=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D0=B8.=20Close?= =?UTF-8?q?s=20#3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todo/src/main/java/ru/kamask/pet/TodoApp.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/todo/src/main/java/ru/kamask/pet/TodoApp.java b/todo/src/main/java/ru/kamask/pet/TodoApp.java index 305f120..ff89c79 100644 --- a/todo/src/main/java/ru/kamask/pet/TodoApp.java +++ b/todo/src/main/java/ru/kamask/pet/TodoApp.java @@ -8,6 +8,7 @@ public class TodoApp { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { + /* * System.out.println("\n\nDeveloper mode:\n\n"); * @@ -15,6 +16,8 @@ public class TodoApp { * 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"); */ @@ -162,4 +165,14 @@ public class TodoApp { t.printInfo(); } + private static boolean markTaskCompletedById(Task[] tasks, int id) { + for (Task t : tasks) + if (t != null && t.getId() == id) { + if (!t.getCompleted()) + t.toggleCompleted(); + return true; + } + return false; + } + }