2017-02-04 60 views
-1

我想運行下面的代碼,但我得到一個IndexOutOfBoundsException。我知道問題出在哪裏,但爲了改進代碼,我想添加一條if語句,如果索引超出範圍,則while循環會中斷。它現在應該打印"bcd"而不會引發異常。索引OutOfBound異常的一段代碼?

相信if語句應該用於這個:index > input.length() - 3但我在哪裏添加它?

public class test { 
    public void findAbc(String input) { 
     int index = input.indexOf("abc"); 
     while (true) { 
      if (index == -1) { 
       break; 
      } 

      String found = input.substring(index + 1, index + 4); 
      System.out.println(found); 
      index = input.indexOf("abc", index + 4); 


     } 
    } 

    public void test() { 
     findAbc("abcdabc"); 
    } 
} 
+0

**現在應打印「BCD」 **這裏d指「C」 –

+1

後,下一個字符是什麼這樣做的目的方法,以及爲什麼你要將'abc'作爲子字符串硬編碼? –

+0

現在很好地縮進了 –

回答

3

你應該在你while-loop條件中使用這個條件,

while (index < input.length()-3 && index >= 0) { }