Создать список дел, который управляется командами в консоли
Есть вот такой код:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
String deals;
String nameOfList;
String deleteList;
int deleteDeal;
System.out.println("Выберите действие и введите код команды: "
+ "\n1 - ADD"
+ "\n2 - EDIT"
+ "\n3 - DELETE"
+ "\n4 - LIST");
Scanner scanner = new Scanner(System.in);
List<String> todoList = new LinkedList<>();
todoList.add(0,"Найти деньги");
todoList.add(1,"Попросить у кого-то деньги");
todoList.add(2,"Заработать деньги");
todoList.add(3,"Украсть у кого-то деньги");
todoList.add(4,"Напечатать деньги самому");
String str = "ADD";
String str1 = "EDIT";
String str2 = "DELETE";
String str3 = "LIST";
if (scanner.hasNext(str)) {
String addList = scanner.nextLine();
System.out.println("Вы добавили новое дело: \"" + addList + "\"");
todoList.add(addList);
for (String edit : todoList){
System.out.println(edit);
}
}
if (scanner.hasNext(str1)) {
System.out.println("Введите номер дела, которое хотите отредактировать");
nameOfList = scanner.nextLine();
todoList.add(nameOfList);
todoList.remove(nameOfList);
int deleteList1 = Integer.parseInt(scanner.nextLine());
System.out.println("Введите новое дело");
String editList1 = scanner.nextLine();
System.out.println("Вы отредактировали дело.");
deleteDeal = deleteList1;
todoList.set(deleteDeal - 1, editList1);
}
if (scanner.hasNext(str2)){
System.out.println("Введите номера дела, которое хотите удалить");
deleteList = scanner.nextLine();
todoList.remove(deleteList);
int deleteList1 = Integer.parseInt(scanner.nextLine());
System.out.println("Вы удалили дело № " + deleteList1);
deleteDeal = deleteList1;
todoList.remove(deleteDeal - 1);
}
if (scanner.hasNext(str3)){
for (String edit : todoList){
System.out.println(edit);
}
}
}
}
Нужно сделать так, чтоб команды писались в одну строчку. К примеру:
"EDIT 5 Придумать нормальный список дел
После консоль бы выдавала:
Найти деньги
Попросить у кого-то деньги
Заработать деньги
Придумать нормальный список дел
Напечатать деньги самому."
Я не понимаю как можно это реализовать.
//Знаю, что небольшие проблемы с командой ADD. Они будут исправлены чуть позже:)//
Ответы (3 шт):
Автор решения: Антоша
→ Ссылка
public static void main(String[] args)
{
String deals;
String nameOfList;
String deleteList;
int deleteDeal;
System.out.println("Выберите действие и введите код команды: 1 - ADD 2 - EDIT 3 - DELETE4 - LIST");
System.out.println("Найти деньги");
System.out.println("Попросить у кого-то деньги");
System.out.println("Заработать деньги");
System.out.println("Украсть у кого-то деньги");
System.out.println("Напечатать деньги самому");
Scanner scanner = new Scanner(System.in);
List<String> todoList = new LinkedList<>();
Но не в деньгах счастье, уж поверьте
Автор решения: Юлия
→ Ссылка
Вдруг кому будет интересно:
public static ArrayList<String> deeds = new ArrayList<>() {{
add("Найти деньги");
add("Попросить у кого-то деньги");
add("Заработать деньги");
add("Украсть у кого-то деньги");
add("Напечатать деньги самому");
}};
public static String comm(String[] string) {
return string[0].trim();
}
public static int ind(String[] string) {
return Integer.parseInt(string[1].trim());
}
public static String scanDeed(String[] string, int index) {
StringBuilder sb = new StringBuilder();
for (int i = index; i < string.length; i++) {
sb.append(string[i]).append(" ");
}
return sb.toString().trim();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = " ";
while (!str.equals("EXIT")) {
System.out.println("Введите команду или \"EXIT\" для завершения: ");
str = scanner.nextLine();
String[] commands = str.split("\\s+");
String command = " ";
String deed = null;
int index = -1;
if (str.matches("^[\\p{Upper}]+")) {
command = str.trim();
} else if (str.matches("^[\\p{Upper}]+\\s+\\d+")) {
command = comm(commands);
index = ind(commands);
} else if (str.matches("^[\\p{Upper}]+\\s+\\d+.+")) {
command = comm(commands);
index = ind(commands);
deed = scanDeed(commands, 2);
} else if (str.matches("^[\\p{Upper}]+.+")) {
command = comm(commands);
deed = scanDeed(commands, 1);
} else {
System.out.println("Неверная команда.");
}
switch (command) {
case ("LIST"):
System.out.println("Список дел:");
for (int i = 0; i < deeds.size(); i++) {
System.out.println("Работа номер: " + i + " " + deeds.get(i));
}
break;
case ("ADD"):
if (index > -1 && index < deeds.size()) {
deeds.add(index, deed);
System.out.println("Добавлена работа \"" + deed + "\" с индексом " + index);
} else if (index > deeds.size()) {
System.out.println("Укажите индекс не более " + (deeds.size() - 1));
} else {
deeds.add(deed);
}
break;
case ("EDIT"):
if (index > -1 && index < deeds.size()) {
deeds.set(index, deed);
System.out.println("Работа под индексом " + index + " изменена на \"" + deed + "\"");
} else {
System.out.println("Неверная команда. Укажите индекс редактируемого дела" +
" значением не более " + (deeds.size() - 1));
}
break;
case ("DELETE"):
if (index > -1 && index < deeds.size()) {
deeds.remove(index);
System.out.println("Работа с индексом " + index + " удалена");
} else {
System.out.println("Неверная команда. Укажите индекс удаляемого дела" +
" значением не более " + (deeds.size() - 1));
}
break;
case ("EXIT"):
System.out.println("Работа завершена.");
break;
default:
System.out.println("Такой команды нет. \nДоступные команды: LIST, ADD, EDIT, DELETE.");
}
}
}
Автор решения: Airat
→ Ссылка
Вот вариант решения
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;
}
}
}
}
