Приветствую вас, хабровчане!
Намедни начал изучать 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);
}
}
}
}