2014-11-02 48 views
0

我正在努力解決一個問題,我正在創建一個虛擬人機界面,可以與計算機通話,它會響應您的意見。所以我去了一個字符串,並把它切成文字(split()函數),都很簡單。知道我是否希望PC在字符串中包含某些單詞時作出響應,但事實並非如此。當我放入包含「hi」,「how」「you」的字符串時,它會不斷終止程序。我粘貼了下面的代碼片段。如何在if語句中讀取多個.equals語句

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") 
} 
} 

有什麼建議嗎?

+1

請改變'I'到'i'在循環,這是奇怪:/ – Maroun 2014-11-02 09:16:31

+2

'response [I] .equalsIgnoreCase(「hi」)&& response [I] .equalsIgnoreCase(「how」)&& response [I] .equalsIgnoreCase(「you」)''可以更簡潔地寫成'false' 。 – 2014-11-02 09:18:35

+0

a == b&& a==c;當b!= c時,整個表達式的計算結果爲false,並且if的主體從不計算。要了解更多,請研究[二元布爾代數](http://en.wikipedia.org/wiki/Two-element_Boolean_algebra) – YoYo 2014-11-02 09:30:39

回答

-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是一個列表或者由 「喜」, 「如何」 和 「你」 的陣列。

+0

Thankyou這真的有幫助。所有剩下的東西都是向前的。 – 2014-11-02 09:30:47

+0

@AndreSchoultz標記爲其他人的答案,如果它是有幫助的。 – 2014-11-02 09:51:33

0

如果我看到的是正確的,則將兩次相同的字符串進行比較,每次使用不同的字符串。換句話說,響應[I]不能等於「你好」和「如何」。將& &更改爲|| ;)

0

您在使用和操作的if語句(& &)時,你應該使用或(||)

科瑞