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

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

15.03.2020, 12:42. Показов 25655. Ответов 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__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
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__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
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__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
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__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
16.03.2020, 19:38
Swile, мдя, я те рекомендовал, как на пульте, вводишь код команды, а ты не понял((
0
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 14
16.03.2020, 19:41  [ТС]
Нет, это я понял. Но там сначала, условно, выбираешь 1- "ADD", потом вводишь дело. А нужно сразу, чтоб можно было ввести целой фразой, ADD "номер дела" "само дело".
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
16.03.2020, 19:50
если так
Цитата Сообщение от Swile Посмотреть сообщение
1- "ADD", потом вводишь дело.
то, код команды лишнее, ты все равно вводишь команду))
так, как ты хочешь есть много путей. например, ищи список команд в введеной строке, если есть удаляй ее написание, а остаток в список дел.
1
0 / 0 / 0
Регистрация: 15.01.2020
Сообщений: 14
16.03.2020, 19:56  [ТС]
Ааа... понял, Извини, я просто очень новичек в этом, по этому иногда не понимаю, казалось бы, элементарных вещей
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru