@Justperfect

Как правильно задать условие?

Приветствую вас, хабровчане!
Намедни начал изучать Java, в данный момент пишу программу, которая выполняет команды по добавлению, редактированию и удалению списка дел.

После выполнения каждой команды в конце выводится актуальный список дел. Среди них есть две ключевые:
ADD - Добавляет дело последним по списку
ADD X - Добавляет дело и присваивает ему соответствующий порядковый номер.

Моя проблема в том, что команда ADD ( в отличие от всех остальных) вызывает появление общего списка дел только после повторного ввода в консоль. Пример:
ADD Дело 1
Вы добавили: Дело 1
ADD Дело 2 (или любая другая лабуда)
Список дел:

Первое дело
Второе дело
Третье дело
Дело 1
Вы добавили: Дело 2.

Предполагаю, что проблема кроется в переменной "boolean input3", которую я использую для того, чтобы определить есть ли число в введенной пользователем строке или нет (чтобы разделить между собой методы ADD или ADD X). Буду благодарен конструктивным советам. Сам код прикрепляю ниже и прошу его не пугаться.

import java.util.ArrayList;
import java.util.Scanner;

public class Loader {
    public static void main(String[] args) {


        ArrayList<String> list = new ArrayList<>(){{
            add("Первое дело");
        }};

        list.add("Второе дело");
        list.add("Третье дело");

        System.out.println("Введите команду " +
                "\n ADD - для добавления дела; " +
                "\n LIST - для вывода списка дела," +
                "\n ADD X - для добавления дела в строку X" +
                "\n DELETE X - для удаления строки" +
                "\n EDIT X - для редактирования строки");

        Scanner scanner = new Scanner(System.in);
        String add = "ADD";
        String printList = "LIST";
        String delete = "DELETE";
        String edit = "EDIT";
        Boolean finish = false;


        while (!finish) {

            String input = scanner.next();

            // ADD
            if (input.equals(add)) {
                boolean input3 = scanner.hasNextInt();
                if (!input3){
                String input2 = scanner.nextLine();
                input2 = input2.replaceAll("ADD", "");
                input2 = input2.trim();
                list.add(input2);
                System.out.println("Вы добавили: " + input2);
            }
        }

            // LIST
            if (input.equals(printList)) {}

            // ADD X
            if (input.equals(add)) {
                boolean input3 = scanner.hasNextInt();
                if (input3) {
                    String input2 = scanner.nextLine();
                    int firstIndex = input2.indexOf(' ');
                    int secondIndex = input2.indexOf(' ', +1);
                    String value = input2.substring(firstIndex, secondIndex).trim();
                    int i = Integer.parseInt(value);
                    String text = input2.substring(secondIndex);
                    boolean comp = i > list.size() + 1;
                    if (comp) {
                        i = list.size();
                        list.add(i, text.trim());
                    }
                    if (!comp) {
                        list.add(i - 1, text.trim());
                    }
                }
            }

            // DELETE X
            if (input.equals(delete)) {
                boolean input3 = scanner.hasNextInt();
                if (input3) {
                    String input2 = scanner.nextLine();
                    int firstIndex = input2.indexOf(' ');
                    String value = input2.substring(firstIndex).trim();
                    int i = Integer.parseInt(value);

                    boolean comp = i > list.size();
                    if (comp) {
                        System.out.println("Неправильное значение! У вас всего " + list.size() + " дел(а)!");
                    }
                    if (!comp) {
                        list.remove(i - 1);
                    }
                }
            }

            // EDIT X
            if (input.equals(edit)) {
                boolean input3 = scanner.hasNextInt();
                if (input3) {
                    String input2 = scanner.nextLine();
                    int firstIndex = input2.indexOf(' ');
                    int secondIndex = input2.indexOf(' ', +1);
                    String value = input2.substring(firstIndex, secondIndex).trim();
                    int i = Integer.parseInt(value);
                    String text = input2.substring(secondIndex);

                    boolean comp = i > list.size();
                    if (comp) {
                        System.out.println("Неправильное значение! У вас всего " + list.size() + " дел(а)!");
                    }
                    if (!comp) {
                        list.remove(i - 1);
                        list.add(i - 1, text.trim());
                    }
                }
            }

            if (input.equals("STOP")) {
                finish=true;
            }

            System.out.println("Список дел: \n");
            for (String print : list) {
                System.out.println(print);
            }
        }
    }
}
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Коли начали изучать, то начните с перечислений - enums и оператора switch/case
Ответ написан
Комментировать
@Nazriaz
Внутри цикла 2 if с одинаковым условием input.equals(add)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 нояб. 2024, в 17:41
2000 руб./за проект
27 нояб. 2024, в 17:26
1 руб./за проект
27 нояб. 2024, в 17:17
3000 руб./за проект