import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static String name;
static String description;
static ArrayList<String> todolist = new ArrayList<>();
public static void main(String[] args) {
while (true) {
Scanner console = new Scanner(System.in);
System.out.println("ENTER COMMAND: ");
String a = console.nextLine();
if (a.equals("create_task")) {
Scanner console1 = new Scanner(System.in);
System.out.println("ENTER TASK NAME: ");
name = console1.nextLine();
todolist.add(name);
Scanner console2 = new Scanner(System.in);
System.out.println("ENTER TASK DESCRIPTION: ");
description = console2.nextLine();
}
else if(a.equals("list_tasks")) {
for(int i = 0; i < todolist.size(); i++) {
System.out.println("TASK[id:" + (i + 1) + " name: " + name + " description: " + description + "]");
}
}
else if(a.equals("delete_task")) {
Scanner console3 = new Scanner(System.in);
System.out.println("ENTER TASK ID: ");
int remove = console3.nextInt();
todolist.remove(remove);
}
else {
System.out.println("UNKNOWN COMMAND");
}
}
}
ПРИМЕР РАБОТЫ:
ENTER COMMAND
create_task
ENTER TASK NAME:
some name
ENTER TASK DESCRIPTION:
some description
ENTER COMMAND
create_task
ENTER TASK NAME:
some other name
ENTER TASK DESCRIPTION:
some other description
ENTER COMMAND
list_tasks
TASK[id: 1, name: "some name", description: "some description"]
TASK[id: 2, name: "some other name", description: "some other description"]
ENTER COMMAND
delete_task
ENTER TASK ID:
1
ENTER COMMAND
list_tasks
TASK[id: 2, name: "some other name", description: "some other description"]
ENTER COMMAND
my_command
UNKNOWN COMMAND
Helena
14 уровень
Нужна помощь!
Решен
Комментарии (13)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
НикитаExpert
31 января 2022, 06:33
а в чем вопрос то?
+1
Helena
31 января 2022, 06:37
Там ниже пример работы. Мне нужно, чтоб в консоли создавались задачи с опр именем и описанием. У меня они создаются, но абсолютно в каждой задаче одни и те же данные, которые я последние вводила.
ENTER COMMAND:
list_tasks
TASK[id:1 name: fhhdfsj description: fhsjhfs]
TASK[id:2 name: fhhdfsj description: fhsjhfs]
Не понимаю, как сделать
0
НикитаExpert
31 января 2022, 06:42
а вы здесь выводите не лист, а статические переменные.
да и записываете вы всегда эти значения в переменные, следовательно они каждый раз обновляются, а старые никуда не сохраняются
0
hidden #598481
31 января 2022, 06:44
Так происходит, потому что у тебя в классе одна статическая переменная name и одна description. Они не могут хранить в себе все имена и описания, и они никак не связаны с твоим туду-листом.
Решение минимум: завести себе список имён и список описаний.
Оптимальное решение: написать класс Todo с двумя полями, именем и описанием, завести в классе Main список элементов Todo.
0
НикитаExpert
31 января 2022, 06:49
А можно сделать так.
static ArrayList<Main> todolist = new ArrayList<>();
изменить переменные на не статические, и записывать в список объекты Main
0
Helena
31 января 2022, 06:55
Это как? не очень понимаю. 😥
0
НикитаExpert
31 января 2022, 06:57
Но лучше сделать все же как предложил vk master)
0
Helena
31 января 2022, 06:58
Cпасибо, буду пробовать))
0
hidden #598481
31 января 2022, 08:48
Ну по сути, если переименовать класс Main в Todo, то получится то же самое, что я и написал.
Только я думаю для решения задачи на каком-то онлайн-ресурсе нужен внешний класс с именем Main, как пресловутый Solution на JR.
0
Helena
31 января 2022, 12:34
https://github.com/lipanissa9helen/console-app.git
Сделала так, если интересно)
+2
hidden #598481
31 января 2022, 14:03
Хорошо, примерно это я и имел в виду.
Если бы я сам писал этот код, то я бы убрал сеттеры и сделал оба поля final, чтобы они были неизменяемыми.
Вызывать методы геттеров внутри toString избыточно, потому что у этого метода есть такой же доступ к этим полям, как и у геттера.
Да и геттеры, пожалуй, можно было бы убрать, т.к. сейчас единственное предназначение класса Task - это создать объект из двух полей и вернуть их строковое представление. Потом при расширении функционала можно будет добавлять другие публичные методы.
это тоже бесполезный артефакт.
Главный плюс такого решения - это следование принципам ООП. Здесь видно, что ты понимаешь, что сами по себе отдельно взятые строки name и description не представляют смысла - их можно использовать только как свойства единого объекта Task.
+1
Helena
31 января 2022, 16:26
Вы действительно мне очень помогли. Благодарю!))
+1
hidden #598481
31 января 2022, 06:31
Какая была задача и в чём вопрос?
0