Чат-бот разграничивает "Знаю" и "Нет" в Java - PullRequest
0 голосов
/ 09 января 2019

Я делаю простого чат-бота на Java для своего класса AP Java в старшей школе. Мой бот должен распечатать «Почему так отрицательно», когда вменяется предложение с «нет» в нем, а также должен распечатать «Я не знал», когда вменяется предложение с «знать» в нем. Мой бот постоянно печатает «Почему так негативно», когда «вменяется» вменяется из-за «нет в курсе». Кто-нибудь может помочь порекомендовать решение для меня?

Я перепробовал все, что я изучил в Java до сих пор, и не могу найти решение

if (statement.indexOf("No") >= 0)
{                   
response = "Why so negative?";
}
else if (statement.indexOf("Know") >= 0)
{
response = "I didn't know that!";
}

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Ваш код будет работать, если вы переключите свои if заявления

if (statement.indexOf("Know") >= 0) {
    response = "Why so negative?";
} else if (statement.indexOf("No") >= 0) {
    response = "I didn't know that!";
}

Обратите внимание, что indexOf чувствителен к регистру, поэтому, если вы хотите, чтобы ваш бот обрабатывал эти случаи, вы должны сначала преобразовать свой ввод в нижний регистр, например:

String lower = statement.toLowerCase();
if (lower.indexOf("know") >= 0) {                   
    response = "Why so negative?";
} else if (lower.indexOf("no") >= 0) {
    response = "I didn't know that!";
}

Редактировать Использование регулярных выражений будет безопаснее для случаев, когда ваш ввод содержит слова, отличные от «знать» с «нет» в них

Это пример:

String lower = statement.toLowerCase();
if (lower.matches(".*(^| )no( |$).*")) {
    response = "Why so negative?";
} else if (lower.matches(".*(^| )know( |$).*") {
    response = "I didn't know that!";
}
0 голосов
/ 09 января 2019
statement.equalsIgnoreCase("No")){
response = "Why so negative?";
} 

.equalsIgnoreCase можно использовать для сравнения строки (вашего утверждения) с другой строкой («Нет», «знать» ...), игнорируя регистр. Если вам нужно учитывать регистр символов, используйте .equals ("...")

...