2014-11-22 71 views
0

我正在編寫一個簡單的聊天機器人,並且我的方法似乎被卡在循環中。 下面是這個方法,我懷疑while循環存在問題,但是我找不到我搞亂的地方。編譯和運行除了卡住的循環之外沒有問題。下面Chatbot方法卡住循環在Java中

環路發生在一個完整的字符串,聲明,循環爲特定的關鍵字,目標,並開始在startPos

private int findKeyword(String statement, String goal, int startPos) 
{ 
    String phrase = statement.trim(); 
    int psn = phrase.toLowerCase().indexOf(goal.toLowerCase(), startPos); 

    while (psn >= 0) 
    { 
    String before = " ", after = " "; 
    if (psn > 0) 
    { 
     before = phrase.substring(psn-1, psn).toLowerCase(); 
    } 
    if (psn + goal.length() < phrase.length()) 
    { 
     after = phrase.substring(psn + goal.length(), psn + goal.length() + 1).toLowerCase(); 
    } 

    if (((before.compareTo("a") < 0) || (before.compareTo("z") > 0)) && ((after.compareTo("a") < 0) || after.compareTo("z") > 0)) 
    { 
     return psn; 
    } 

    psn = phrase.indexOf(goal.toLowerCase(), psn + 1); 
    } 
    return -1; 
} 

回答

0

PSN翻翻字符串= phrase.indexOf(goal.toLowerCase() psn + 1);

永遠富(PSN < 0)這就是問題

+0

豈不PSN不斷增加,直到它到達語句的結束或有目標在聲明中沒有更多的情況? – OSG 2014-11-22 04:20:28