聊天机器人在Java中区分“知道”和“否”

时间:2019-01-09 20:20:46

标签: java chatbot indexof

我正在为Java的高中AP Java课制作一个简单的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 :(得分:0)

statement.equalsIgnoreCase("No")){
response = "Why so negative?";
} 

.equalsIgnoreCase可用于在忽略大小写的情况下将一个字符串(您的语句)与另一个字符串(“ No”,“ know” ...)进行比较。如果需要区分大小写,请使用.equals(“ ...”)

答案 1 :(得分:0)

如果您切换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!";
}