Вы сравниваете свои строки, text
и A
, используя ==
, что является неправильным способом сравнения строк - он проверяет, являются ли два объекта String одним и тем же объектом, а не только тем, что они содержат один и тот же текст.
Вы хотите сравнить, используя if (text.equals(A))
или, если вы хотите сопоставить без учета регистра, вы бы использовали if (text.equalsIgnoreCase(A))
с .equals()
, который вы ищете "Эйчеловек ", но если человек наберет" эй человек ", они не будут совпадать, и бот не будет отвечать только из-за прописных и строчных букв" привет "против" привет ".Если вы не хотите соответствовать фразе, независимо от того, как кто-то печатает ее, вы использовали бы .equalsIgnoreCase()
Если вы хотите иметь несколько фраз, вы можете использовать массив или какой-то Collection и вы перебираете его, чтобы найти совпадение, что-то вроде
for (final String phrase : phrases) {
if (phrase.equalsIgnoreCase(text)) {
System.out.println(some_text_for_that_phrase);
}
}
... где я использую phrases
вместо A
, потому что это более наглядно.
Если вам нужны разные ответы для каждой возможной совпавшей фразы, вы, вероятно, захотите, чтобы ваша Коллекция была Карта , где карта , ключ - этофраза, которую вы хотите сопоставить, и карта значение является ответом, который вы дадите.В этом случае вы получите пользовательский текст и просто будете использовать его напрямую, чтобы получить ответ от карты без необходимости зацикливания
final String response = phraseMap.get( userText.toLowerCase() );
if (response != null) {
System.out.println(response);
}
Невозможно сравнить регистр игнорирования с ключами карты, поэтому вы захотитестрочные буквы каждой ключевой фразы, которую вы положили на карту, затем строчные буквы пользовательского ввода, чтобы они соответствовали тому, что на карте.Значения ответов, конечно, могут быть любым сочетанием случаев, которое вы хотите.
Как вы заполните карту ключевыми фразами, и ответы будут другим отдельным вопросом.