Как мне создать существование условной строки в операторе if? (ответы на похожие вопросы не сработали)

#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);