为课堂编写一个简单的 Eliza 程序,但我陷入困境。
如果用户说
"I feel"
,
程序需要询问
"Why do you feel " +(everything after "I feel") + "?"
.
现在它只是打印我所说的所有内容,因为索引
idx
没有保存"I feel"
的长度。
但是,老师不希望我们为子串输入具体的数字。
这是我所拥有的:
}else if(userAnswer.toLowerCase().contains("i feel")){
int idx = userAnswer.indexOf("i feel");
ElizaAnswer = "Why do you feel " + userAnswer.substring(idx , userAnswer.length()) + "?";
}
子字符串的第一部分(在您的情况下为 idx)应该是您开始位置的索引。所以应该是
idx.length()
您可以编写一个函数来解析字符串中的模式。该函数将返回输入的其余部分。
如果您将问题分成只做单一事情的部分,而不是用硬编码数据搞乱代码,那么实现起来很容易。