Как сделать условную строку существующей в операторе if? (ответы на похожие вопросы ответы не сработали) - PullRequest
0 голосов
/ 03 мая 2011

Я беру урок программирования, и я начал делать программу, похожую на чат-бота. Я пытался научить этому чему-то одному (по крайней мере), если бы вы сказали что-то вроде «Я хочу научить вас».

Прямо сейчас это работает, только если я использую:

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 Ответ

0 голосов
/ 03 мая 2011

Рассмотрите возможность хранения данных отдельно от логики кода. Например (я собираюсь принять 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...