如何在if语句中读取多个.equals语句

时间:2014-11-02 09:15:43

标签: java

我正在努力解决问题,我正在创建一个虚拟的人机界面,人们可以与计算机通话,它会响应你所说的内容。所以我去了一个字符串并将其切成单词(split()函数),一切都很简单。知道我是否希望PC在字符串中的某些单词时做出响应,但它不会。当我输入一个包含" hi" "如何" &的字符串时,它会继续终止程序#34;你" 。我已粘贴下面的代码段。

String responseP1 = userInput.next();
String[] response1 = responseP1.split(" ");
 for (int I = 0; I<response1.lenght; I++){
    if (response[I].equalsIgnoreCase("hi") 
      && response[I].equalsIgnoreCase("how") 
      && response[I].equalsIgnoreCase("you")){
         System.out.println("It works")
 }
}

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

如果我看到了这一点,你将两次相同的字符串进行比较,每次都使用不同的字符串。换句话说,响应[I]不能等于&#34; hi&#34;和&#34;如何&#34;。改变&amp;&amp;到|| ;)

答案 1 :(得分:0)

当您使用或(||)

时,您在if语句(&amp;&amp;)中使用了&运算符

Corey

答案 2 :(得分:-1)

您可以跟踪要显示的字词数。

int words = 0;
for (int I = 0; I<response1.length; I++) {
    if (response[I].equalsIgnoreCase("hi") || response[I].equalsIgnoreCase("how") || response[I].equalsIgnoreCase("you"))
        words++;
}

if (words == 3)
    System.out.println("It works");

但更好的建议是:

for (int i = 0; i < keywords.length; ++i)
    if (!responseP1.contains(keywords[i])) 
        System.out.println("It does not work");

keywords是一个列表或数组,由&#34; hi&#34;,&#34;如何&#34;和&#34;你&#34;。