2015-06-09 102 views
-3
if(line.get(count).substring(line.get(count).indexOf(p1)).equals(p1.substring(0, p1.indexOf(" ")))) { 
    count++; 
    if(line.get(count).contains(p1.substring(p1.indexOf(" ") + 1, p1.length()))) 
     System.out.println((count-1) + "  " + (line.get(count-1).indexOf(p1)) + "  " + p1); 
} 

行是數組列表與65008大小結合的異常,我想一個名字的測試出現在第二行的文件,與第一名稱出現在一行並且姓氏出現在第二行。但是,索引超出界限的異常發生在第一個if語句處。我無法意識到,如果我在這裏做了錯誤,導致此問題,因爲我試圖比較子字符串。任何人都可以提出解決此問題的方法嗎?這些if語句很長,但我會稍後嘗試調整它們。字符串索引出的if語句

+0

你確定'line.get(count)'包含'p1',而'p1'包含'「」'? – Eran

+0

提供您的堆棧跟蹤。 –

+0

附註:在你花費數小時調試它之後,不要調整複雜的代碼**。確保它很容易**從一開始就閱讀和理解。因爲那樣...你可能不需要花費數小時的調試,就可以轉而採取行動來獲得幫助。 此外:請退後一秒;並重讀你的問題。你真的認爲你對這個社區表示尊重:「我知道,我的代碼很難閱讀,我會在稍後修復;同時,親愛的互聯網,請幫我找到這個醜陋的意大利麪代碼在這裏「 – GhostCat

回答

0

嘗試使用此代碼:

 if (line.get(count).substring(line.get(count).indexOf(p1)) 
      .equals(p1.substring(0, p1.indexOf(" ")))) { 
     if (line.get(count).contains(
       p1.substring(p1.indexOf(" ") + 1, p1.length()))) { 
      System.out.println((count - 1) + "  " 
        + (line.get(count - 1).indexOf(p1)) + "  " + p1); 
     } 
     count++; 
    } 

的主要區別是,它增加後都算,如果條件已運行也增加了括號到第二,如果以提高可讀性。我不確定這是否會解決問題,如果不是,那麼您可能需要提供更多信息。