如何使if / else语句首先读取匹配的关键字? (JAVA)

时间:2017-08-09 09:16:57

标签: java if-statement

如何为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语句。

3 个答案:

答案 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;等