2014-10-27 28 views
0

我有兩個字符串表:的Java startsWith不正常工作

String[] tab = {"why","Why"}; 

而且我想它他們,看看是否有人要求比那些在我的標籤[]不同的單詞一個問題:

for (int i = 0; i < tab.length; i++) { 
      if(!message.startsWith(tab[i])){ 
       System.out.println("Ask using why or Why"); 
       break;  
      } 
      } 

當我輸入我的輸入:「爲什麼天氣不好?」,它會返回:「詢問爲什麼或爲什麼」。 當我輸入:「你好嗎?」時,它會返回「詢問爲什麼或爲什麼」。

我希望這個程序只允許以why或why爲開頭的問題。

我在做什麼錯?

+0

你想「它」呢? – DreadHeadedDeveloper 2014-10-27 17:27:47

+1

'message'的內容是什麼?請發佈用於填充「消息」的代碼。 – rgettman 2014-10-27 17:30:53

回答

3

你在做什麼:

  1. 對陣的第一個條目
  2. 如果不匹配,顯示消息給用戶,並中止。

你想要做什麼:

  1. 對陣中的第一項。
  2. 如果不匹配,請嘗試下一個條目。
  3. 如果沒有條目匹配,則向用戶顯示消息並中止。

下面是一個例子:

boolean found = false; 

for (int i = 0; i < tab.length; i++) { 
    if(message.startsWith(tab[i])){ 
     found = true; 
     break; 
    } 
} 

if (!found) { 
    System.out.println("Ask using why or Why"); 
} 

在您的特定情況下,你也可以檢查字符串的小寫版本:

if (!message.toLowerCase().startsWith("why")) { 
    System.out.println("Ask using why or Why"); 
} 
+0

這解決了我的問題。謝謝。 – candylady 2014-10-27 17:42:41