From 5c66a66bfe84aab4b008c877709652a3fc6544df Mon Sep 17 00:00:00 2001 From: KamaSK Date: Mon, 19 May 2025 13:24:34 +0300 Subject: [PATCH] =?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]; }