У меня есть такой вопрос. Если я хочу реализовать сервис по обработке запросов клиента по определенным командам, то как это лучше сделать?
у меня есть такая цель:
Система должна уметь обрабатывать команды:
- `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"
}
}
На заре программирования делалось так:
Выводился нумерованный список команд, от пользователя требовалось ввести номер цифрами. Это и количество ошибок уменьшало и `I don't understand` исключало.