Регистрация
12 Дек 2012
Сообщения
67
Репутация
0
Спасибо
0
Монет
0
У меня есть такой вопрос. Если я хочу реализовать сервис по обработке запросов клиента по определенным командам, то как это лучше сделать?



у меня есть такая цель:

Система должна уметь обрабатывать команды:

- `print balance`

- `show books in stock`

- `buy book <название> <количество>`

- `show bought books`

- `exit`

На любые другие команды система должна отвечать фразой: `I don't understand`



Как лучше реализовать бесконечную работу этого через консоль? как вызывать эти методы через саму консоль? как вообще настроить это взаимодействие с пользователем.



Простите если не очень понятно объяснила. Я просто даже не могу понять как это правильно гуглить



Помогите пожалуйста советом, что почитать и какие структуры вообще использовать
 
//Создаем сканер для чтения команд из консоли
Scanner sc = new Scanner(System.in);

//Шаблон команды: buy book "название латинскими буквами с пробелами" 1234
Pattern buyBook = Pattern.compile("buy book \"([A-Za-z ]+)\" (\\d+)");

loop:
while (true) {
String cmd = sc.nextLine(); //Читаем одну команду
switch (cmd) {
case "print balance":
//Тут выводим баланс
break;
case "show books in stock":
//Тут показываем книги в наличии
break;
case "show bought books":
//Тут показываем купленные книги
break;
case "exit":
break loop; //Выходим из цикла loop
default:
//Проверяем команду на соответствие шаблону
Matcher m = buyBook.matcher(cmd);
if (m.matches()) { //Если соответствует…
String title = m.group(1); //Достаем название книги
int qty = Integer.parseInt(m.group(2)); //Достаем количество книг
//Тут оформляем заказ
} else { //Если команда не соответствует шаблону, то мы такую не знаем
System.out.println("I don't understand");
}
}
 
while True:
__command = input()
__if command == "print balance":
____print_balance()
__elif command == "show books":
____show_books()
...
__elif command == "exit":
____break
__else:
____print("invalid command, try again")
 
На заре программирования делалось так:
Выводился нумерованный список команд, от пользователя требовалось ввести номер цифрами. Это и количество ошибок уменьшало и `I don't understand` исключало.
 
обязательно нужен ввод таких длинных команд? чтобы юзер задолбался делать ввод команды... и так чтоб сразу и без ошибок и опечаток...
 
Назад
Сверху