如何为ChatBot程序中的第一个匹配关键字实现条件?下面的代码是我正在使用的当前代码:
public static void firstMatchingKeyword1() {
String sex;
sex = JOptionPane.showInputDialog(null, "Are you a guy or woman?");
if (sex.contains("guy")) {
JOptionPane.showMessageDialog(null, "I am a guy too");
} else if (sex.contains("woman")) {
JOptionPane.showMessageDialog(null, "I am a woman too");
}
}
问题是,如果两个关键字都是礼物,我希望输出是第一个键入的关键字。 例如:如果用户输入“我是女人,也是男人”。我希望输出只是“我也是女人”的信息,而不是逐个浏览所有的if语句。
答案 0 :(得分:2)
indexOf
是你的朋友。
从指定索引处开始,返回指定子字符串第一次出现的字符串中的索引。
if (sex.indexOf("guy") > 0 && sex.contains("guy") && (sex.indexOf("guy")<sex.indexOf("woman") ||
sex.indexOf("woman") == -1)) {
{
JOptionPane.showMessageDialog(null, "I am a guy too");
} else if (sex.contains("woman")) {
JOptionPane.showMessageDialog(null, "I am a woman too");
}
答案 1 :(得分:1)
我认为你只需要添加:
if (sex.contains("guy") && (sex.indexOf("guy")<sex.indexOf("woman") || sex.indexOf("woman") == -1)) {
答案 2 :(得分:0)
您可以使用indexOf(String)
。这个功能:
返回第一次出现的字符串中的索引 指定子字符串。
int posGuy = sex.indexOf("guy");
int posWoman = sex.indexOf("woman");
if (posGuy >= 0 && posWoman >= 0) {
if (posGuy < posWoman) {
//guy before woman
}
else {
//woman before guy
}
}
else if (posGuy >= 0) {
// guy
}
else if (posWoman >= 0) {
// woman
}
值得注意的是,这是一个区分大小写的搜索,因此您可能希望在搜索之前将输入转换为小写,以便它匹配&#34; Guy&#34;,&#34; GUY& #34;,&#34; GuY&#34;等