Вы не думаете о четвертом измерении! (шутите в сторону сейчас)
Вы пытаетесь обрабатывать последовательность событий сразу в своем слушателе, но ваш слушатель будет называться несколько раз: один раз для ответа на первый вопрос и второй раз для ответа на ваш вопрос последующий комментарий.
Вам необходимо сделать свой приемник дескриптором обоих этих состояний независимо. Вероятно, вам нужно зафиксировать состояние вашего последнего заданного вопроса в области класса и проверить его в своем слушателе, чтобы определить, какой вопрос был задан, чтобы вы знали, как оценивать содержимое text
и дать правильный ответ.
Возможно, вы не изучите конечные автоматы или формальное изучение государственных машин еще на несколько семестров, но это важный шаг к элементарному пониманию. Не зная постановку проблемы, я предполагаю, что задание пытается подтолкнуть вас в этом направлении. Кроме того, в любой парадигме, хотя для Java мы будем придерживаться OO, есть много способов добавить некоторые слои красоты и отказоустойчивости для лучшего решения, но я намерен придерживаться того, что для вас наиболее просто. Например, вы можете создать класс, который представляет каждое состояние в ожидании ответа пользователя (вопрос 1, вопрос 2 и т. Д.) И моделировать состояния и переходы внутри вашего приложения. Каждое состояние, которое смоделировано, будет знать о заданном вопросе, потенциальных ответах и переходах в другие государства. В системе OO каждое из этих состояний будет иметь API и работать через некоторый вызов, например execute()
, который будет оценивать текущее состояние системы и определять переход. Сделайте еще несколько исследований по этому вопросу самостоятельно.
Обратно к вашему простому примеру. Допустим, у вас есть только два случая: по одному для каждого вопроса: «что нового» и «вы программируете». Храните некоторое представление в классе (именованные константы являются хорошей практикой):
class Interrogator {
String q1 = "what's new";
String a1 = ...do you program?";
String q2 = "yes";
...
}
теперь в вашем actionPerformed
, проверить содержимое как ваш вопрос-текст-область от известных вопросов и ваш ответ район от известных ответов: if (a1.equals(textArea.getText() && q2.equals(text.getText()))
, то вы знаете, что отображается ответ на начальный (неуправляемый) вопрос, и был введен ожидаемый ответ. Не забывайте, что ваш форматирующий перевод (в нижнем регистре, кавычки).
У вас есть пример, который я могу использовать? http://hastebin.com/ –
Я не хочу давать хороший рабочий пример или псевдокод, который более чем дико высокий уровень, так как это, похоже, упражнение, предназначенное для вас. –
У вас есть статья или подсказка? –