#conditional-statements #chatbot
#условные операторы #чат-бот
Вопрос:
Я посещаю курс программирования и начал создавать программу, похожую на чат-бота. Я пытался научить его чему-то одному (по крайней мере), если вы сказали что-то вроде «Я хочу научить тебя».
Прямо сейчас это работает, только если я использую:
String name = JOptionPane.showInputDialog("What word or phrase would you like to teach me to respond to?")
learn1Reply= JOptionPane.showInputDialog("So now, what do you want me to say when you type, '" learn1 "' in?");;
Я не знаю, как сделать это оператором if, который привел бы к последующему вводу:
else if(text.equalsIgnoreCase(learn1))
{
JOptionPane.showMessageDialog(null, learn1Reply);
}
Я прочитал кучу ответов на этом сайте о создании условных переменных, но они мне не помогли.
Я уверен, что есть гораздо более простой способ сделать это, о котором я не знаю.
Комментарии:
1. будьте осторожны с пунктуацией в коде и прочитайте FAQ, чтобы узнать, как использовать Markdown, чтобы он был правильно отформатирован.
Ответ №1:
Рассмотрите возможность хранения данных отдельно от логики кода. Например (я собираюсь использовать java из-за вашего примера, но я на самом деле не специалист по Java, поэтому простите меня, если общие сведения неверны):
HashMap responses = new HashMap<string, string>();
Затем просто добавьте в карту, когда будут введены ответы.
responses.put("something", "response text");
Или в вашем случае:
responses.put(learn1, learn1Reply); // After you get the input
Когда вы хотите отобразить соответствующий ответ, просто получите его, а не используйте какое-то большое дерево if-else. (Их становится трудно читать и поддерживать по мере их роста.)
Поэтому вместо
... else if(text.equalsIgnoreCase(learn1)){
JOptionPane.showMessageDialog(null, learn1Reply);
}
Вы можете просто выполнить сам поиск.
JOptionPane.showMessageDialog(null, responses.get(learn1);