Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/120: Рейтинг темы: голосов - 120, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 14

Разработать список дел, которым можно управлять командами в консоли

15.03.2020, 12:42. Показов 25808. Ответов 19

Студворк — интернет-сервис помощи студентам
Всем доброго дня! Есть задание: "Разработать список дел, которым можно управлять командами в консоли. Команды LIST, ADD, EDIT, DELETE. LIST должен выводить дела с их порядковыми номерами. ADD - добавлять дело в конец списка или дело на определённое место, сдвигая остальные дела вперёд, если указать номер. EDIT - заменять дело с указанным номером. DELETE - удалять."
Могли бы вы подсказать, двигаюсь ли я в правильном направлении?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.util.ArrayList;
import java.util.Scanner;
 
public class main
{
    public static void main(String[] args)
    {
        String deals;
        String nameOfDeal;
        int dealNumber;
        String editName;
        int deleteDeal;
        System.out.println("Выберите действие и введите одну из комманд: \n ADD \n EDIT \n DELETE \n LIST");
        Scanner scanner = new Scanner(System.in);
        deals = scanner.nextLine();
        ArrayList<String> toDoList = new ArrayList<>();
        toDoList.add("Сходить в магазин");
        toDoList.add("Убрать в доме");
        toDoList.add("Выбросить мусор");
        toDoList.add("Найти дракона");
        if (deals == "ADD")
        {
            System.out.println("Введите, какое дело вы хотите добавить ");
            Scanner scanner1 = new Scanner(System.in);
            nameOfDeal = scanner1.nextLine();
            toDoList.add(nameOfDeal);
        }
        else if (deals == "EDIT")
    {
        System.out.println("Введите порядковый номер дела, которое вы хотите изменить");
        Scanner scanner2 = new Scanner(System.in);
        dealNumber = scanner2.nextInt();
        toDoList.remove(dealNumber);
        System.out.println("Введите, новое задание вместо старого");
        Scanner scanner3 = new Scanner(System.in);
        editName = scanner3.nextLine();
        toDoList.add(dealNumber,editName);
    }
        else if (deals == "DELETE")
        {
            System.out.println("Введите порядковый номер дела, которое вы хотите удалить");
            Scanner scanner4 = new Scanner(System.in);
            deleteDeal = scanner4.nextInt();
            toDoList.remove(deleteDeal);
        }
        else if (deals == "LIST")
        {
            for (int j = 0; j<toDoList.size(); j++)
            {
                System.out.println(toDoList.get(j));
            }
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2020, 12:42
Ответы с готовыми решениями:

Как пишут программы благодаря которым можно управлять объектами?
Как пишут программы при помощи которых можно управлять предметами у себя дома? Например, когда кто-то откроет холодильник, придет сообщение...

Как можно управлять свойствами и цветом шрифта в консоли
Решил я создать консольную игру, но возникло несколько проблемс) 1)Как можно управлять свойствами и цветом шрифта в консоли(да, знаю куча...

Список: Разработать оконное приложение, позволяющее управлять элементами списка...
Всем привет, я новичок в питоне, помогите пожалуйста разобраться. Разработать оконное приложение, позволяющее: добавить элемент в конец...

19
6 / 4 / 2
Регистрация: 09.01.2018
Сообщений: 59
15.03.2020, 13:01
почитай про Switch, будет красивше. ну а так, почему бы и нет. для новичка норм. и не забывай, что всегда должен рассматривать вариант, что юзер может ввести некорректные данные. (несуществующую команду или число, или еще чего)
1
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 14
15.03.2020, 13:04  [ТС]
Цитата Сообщение от wolfbethowen Посмотреть сообщение
почитай про Switch, будет красивше. ну а так, почему бы и нет. для новичка норм. и не забывай, что всегда должен рассматривать вариант, что юзер может ввести некорректные данные. (несуществующую команду или число, или еще чего)
Сейчас почему-то запускаю, ввожу правильную команду и ничего не происходит. Не понимаю, почему не работает.
З.Ы. про switch сейчас прочту.
0
6 / 4 / 2
Регистрация: 09.01.2018
Сообщений: 59
15.03.2020, 13:12
Лучший ответ Сообщение было отмечено Swile как решение

Решение

ну и про сравнение строк читай

Добавлено через 54 секунды
Сравнение строк (String) в java. Мини гайд для начинающих
1
 Аватар для Aviz__
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
15.03.2020, 14:41
Цитата Сообщение от Swile Посмотреть сообщение
Могли бы вы подсказать,
могли бы, но столько писать придется, братец, что ого-го!
чуток, начну:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Main { // класс с Большой, всегда, такая договоренность в мире
    
    public static void main(String[] args){
        int deals;
        String nameOfDeal;
        int dealNumber;
        String editName;
        int deleteDeal;
        System.out.println("Выберите действие и введите код команды: \n1 - ADD \n2 - EDIT \n3 - DELETE \n4 - LIST");
        Scanner scanner = new Scanner(System.in);
        deals = scanner.nextInt();
        List<String> toDoList = new LinkedList<>();
        toDoList.add("Сходить в магазин");
        toDoList.add("Убрать в доме");
        toDoList.add("Выбросить мусор");
        toDoList.add("Найти дракона");
        if (deals == 1) {
            System.out.println("Введите, какое дело вы хотите добавить ");
            nameOfDeal = scanner.nextLine();
            toDoList.add(nameOfDeal);
        }
.................................
.................................
1
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
15.03.2020, 14:52
Продолжу тогда?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Main { // класс с Большой, всегда, такая договоренность в мире
    
    //Неизменяемые строки можно вынести в константы, так легче читать код
    private static final String CHOOSE_ACTION_MESSAGE = "Выберите действие и введите код команды: \\n1 - ADD \\n2 - EDIT \\n3 - DELETE \\n4 - LIST";
 
    public static void main(String[] args){
        int deals;
        String nameOfDeal;
        int dealNumber;
        String editName;
        int deleteDeal;
        System.out.println(CHOOSE_ACTION_MESSAGE);
        Scanner scanner = new Scanner(System.in);
        deals = scanner.nextInt();
        List<String> toDoList = new LinkedList<>();
        toDoList.add("Сходить в магазин");
        toDoList.add("Убрать в доме");
        toDoList.add("Выбросить мусор");
        toDoList.add("Найти дракона");
        if (deals == 1) {
            System.out.println("Введите, какое дело вы хотите добавить ");
            nameOfDeal = scanner.nextLine();
            toDoList.add(nameOfDeal);
        }
.................................
.................................
1
 Аватар для Aviz__
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
15.03.2020, 15:11
Цитата Сообщение от StepFather322 Посмотреть сообщение
Продолжу тогда?
конечно)). таки сделай усе, через while((deals = scanner.nextInt()) != -1)
соответственно:
private static final String CHOOSE_ACTION_MESSAGE = "Выберите действие и введите код команды: \\n1 - ADD \\n2 - EDIT \\n3 - DELETE \\n4 - LIST"\\n'-1' - EXIT";
1
6 / 4 / 2
Регистрация: 09.01.2018
Сообщений: 59
15.03.2020, 17:38
человек в мейне все пишет. зачем грузить. пусть со строками разберется для начала. а "красиво" здесь каждый может.
0
 Аватар для Aviz__
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
15.03.2020, 18:38

Не по теме:

Цитата Сообщение от wolfbethowen Посмотреть сообщение
"красиво" здесь каждый может
как скажешь, братец, ты же познал истину!

только, ты же не пишешь по китайски, а челу рекомендуешь...
0
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 14
16.03.2020, 19:34  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
конечно)). таки сделай усе, через while((deals = scanner.nextInt()) != -1)
соответственно:
private static final String CHOOSE_ACTION_MESSAGE = "Выберите действие и введите код команды: \\n1 - ADD \\n2 - EDIT \\n3 - DELETE \\n4 - LIST"\\n'-1' - EXIT";
А как сделать так, чтобы можно было вводить в командную строку к примеру: "ADD 2 Завести будильник" и данное "дело" добавлялось по указанному порядковому номеру в список дел? Нужно именно одним выражением, а не как я сделал.
0
 Аватар для Aviz__
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
16.03.2020, 19:38
Swile, мдя, я те рекомендовал, как на пульте, вводишь код команды, а ты не понял((
0
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 14
16.03.2020, 19:41  [ТС]
Нет, это я понял. Но там сначала, условно, выбираешь 1- "ADD", потом вводишь дело. А нужно сразу, чтоб можно было ввести целой фразой, ADD "номер дела" "само дело".
0
 Аватар для Aviz__
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
16.03.2020, 19:50
если так
Цитата Сообщение от Swile Посмотреть сообщение
1- "ADD", потом вводишь дело.
то, код команды лишнее, ты все равно вводишь команду))
так, как ты хочешь есть много путей. например, ищи список команд в введеной строке, если есть удаляй ее написание, а остаток в список дел.
1
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 14
16.03.2020, 19:56  [ТС]
Ааа... понял, Извини, я просто очень новичек в этом, по этому иногда не понимаю, казалось бы, элементарных вещей
0
 Аватар для Aviz__
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
16.03.2020, 20:00
Цитата Сообщение от Swile Посмотреть сообщение
очень новичек
это поправимо))
0
0 / 0 / 0
Регистрация: 03.11.2020
Сообщений: 1
03.11.2020, 05:42
Swile, разобрались? как раз сейчас решаю эту задачу и застопарился на том, чтобы вводить команду с индексом
0
0 / 0 / 0
Регистрация: 29.07.2022
Сообщений: 3
29.07.2022, 13:19
Вот вариант решения
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.util.ArrayList;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        System.out.println("Список команд: \nLIST — выводит дела с их порядковыми номерами;" +
                "\nADD — добавляет дело в конец списка или дело на определённое место, сдвигая остальные дела вперёд, если указать номер;" +
                "\nEDIT — заменяет дело с указанным номером; \nDELETE — удаляет; \nВызовите команду:");
        Scanner scanner = new Scanner(System.in);
        ArrayList<String> todoList = new ArrayList<>() {{
            add(0, "Позавтракать");
            add(1, "Умыться");
            add(2, "Почитать книгу");
            add(3, "Поработать");
            add(4, "Пообедать");
        }};
 
        while (true) {
            String comanda = scanner.nextLine();
            String[] naSlova = comanda.split(" ");
            for (int i = 0; i < naSlova.length; i++) {
                if (naSlova[i].equals("LIST")) {
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                } else if (naSlova[0].equals("ADD") && naSlova.length == 2) {
                    todoList.add(naSlova[1]);
                    System.out.println("Вы добавили новое дело в конец списка:");
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                    break;
                } else if (naSlova[0].equals("ADD") && naSlova.length > 2) {
                    todoList.add(Integer.parseInt(naSlova[1]) - 1, naSlova[2]);
                    System.out.println("Вы добавили новое дело: " + naSlova[2] + ", в позицию номер: " + naSlova[1] + "\nИзмененный список дел:");
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                    break;
                } else if (naSlova[0].equals("EDIT") && naSlova.length == 3) {
                    todoList.set(Integer.parseInt(naSlova[1]) - 1, naSlova[2]);
                    System.out.println("Вы заменили дело в позиции номер: " + naSlova[1] + " на: " + naSlova[2] + "\nИзмененный список дел:");
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                    break;
                } else if (naSlova[0].equals("DELETE") && naSlova.length == 2) {
                    System.out.println("Вы удалили дело " + todoList.get(Integer.parseInt(naSlova[1]) - 1) + ", которое было в позиции номер: " + naSlova[1] + "\nИзмененный список дел:");
                    todoList.remove(Integer.parseInt(naSlova[1]) - 1);
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                    break;
                } else {
                    System.out.println("Не верная команда. Вызовите правильну команду:");
                }
                break;
            }
        }
    }
}
0
0 / 0 / 0
Регистрация: 17.03.2024
Сообщений: 2
17.03.2024, 10:58
Обьясните пожалуйста как работает вот этот код?
получается если в переданном слове содержится слово ADD + еще какой то индекс, то есть длина переданного из консоли равна 2 индексам. то происходит что? то что подчеркнул не понимаю как работает.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 else if (naSlova[0].equals("ADD") && naSlova.length == 2) {
                    todoList.add(naSlova[1]);
                    System.out.println("Вы добавили новое дело в конец списка:");
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                    break;
                } else if (naSlova[0].equals("ADD") && naSlova.length > 2) {
                    todoList.add(Integer.parseInt(naSlova[1]) - 1, naSlova[2]);
                    System.out.println("Вы добавили новое дело: " + naSlova[2] + ", в позицию номер: " + naSlova[1] + "\nИзмененный список дел:");
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                    break;
                } else if (naSlova[0].equals("EDIT") && naSlova.length == 3) {
                    todoList.set(Integer.parseInt(naSlova[1]) - 1, naSlova[2]);
                    System.out.println("Вы заменили дело в позиции номер: " + naSlova[1] + " на: " + naSlova[2] + "\nИзмененный список дел:");
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
                    break;
                } else if (naSlova[0].equals("DELETE") && naSlova.length == 2) {
                    System.out.println("Вы удалили дело " + todoList.get(Integer.parseInt(naSlova[1]) - 1) + ", которое было в позиции номер: " + naSlova[1] + "\nИзмененный список дел:");
                    todoList.remove(Integer.parseInt(naSlova[1]) - 1);
                    for (int j = 0; j < todoList.size(); j++) {
                        System.out.println(todoList.get(j));
                    }
0
0 / 0 / 0
Регистрация: 17.03.2024
Сообщений: 2
23.03.2024, 16:42
подскажи пожалуйста. как можно этот код сократить. пишут что надо создать отдельные классы и реализовать там методы. не понимаю как это
0
0 / 0 / 0
Регистрация: 05.12.2024
Сообщений: 1
05.12.2024, 15:23
Ребят подскажите как в этом коде сделать , если удалили дело и его опять вызывают ошибку или что с выводом System.out.println(" Дело было удалено") Хееелп) не знаю ее в этой части кода писать или где-то в другом месте ?

case (3):
try {
if (scanner.nextline(deleteName))
throw new Exception("Такое значение удалено");
System.out.println("Введите номер для удаления");
Scanner scanner2 = new Scanner(System.in);
deleteNumber = scanner2.nextInt();
list.remove(deleteNumber);
System.out.println("Удалено");
break;
}catch( Exception exception) {
System.out.println("Ошибка: " + exception.getMessage());


у меня ахинея конечно ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2024, 15:23
Помогаю со студенческими работами здесь

Как создать список номеров которыми можно управлять как базой данных
Привет Полный новичок в программировании, вопрос по Delphi Как создать список номеров, которыми можно управлять как условной...

не могу сменить директорию командами в приложении-консоли :(
Добрый день! Написано приложение (Qt) для ОС QNX Neutrino 6.5.0. Это приложение которое имитирует консольное, но на самом деле это...

Вывести список дел на сегодня
нужно вывести список дел на сегодня, вот кусок программы: Program tipak; Uses Crt; Type baza=record mer:string; ...

To do list - сохранить список дел
Добрый день. Я делю to do list. В качестве компонента для отображения задач я выбрал TreeView, т.к. можно обеспечить многоуровневость...

[Mono] Как в C# управлять размером консоли в Ubuntu
Как в C# создать окно под Ubuntu? Как в C# сделать проверку ОС? Как в C# вывести AScii код смайлика под Ubuntu?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru