我想製作一個java程序,它將查找並刪除字符串中的重複字符。就像用戶輸入「baloon」一樣,輸出應該是「balon」。我使用String變量進行輸入,並將其內容複製到Char數組中,以便我可以分析每個字符。我得到ArrayIndexOutOfBoundsException。這裏是我的代碼如何解決此運行時錯誤?
class doubleKiller{
private String inputStr = " ";
private char[] catchStr = new char[inputStr.length()];
private String modifiedStr;
//Accessor method
public void getString(String inputStr)
{
this.inputStr = inputStr;
}
public String killRepeater()
{
//copying string data to char array
this.inputStr.getChars(0 , this.inputStr.length() , catchStr , 0);
//------------------
for(int counter = 0 ; counter < this.inputStr.length() ; counter++)
{
if(catchStr[counter] != catchStr[counter - 1])
{
modifiedStr = modifiedStr + catchStr[counter];
}
}
return modifiedStr;
}
}
這裏是輸出時killRepeater()被調用。
java.lang.ArrayIndexOutOfBoundsException: src.length=5 srcPos=0 dst.length=1 dstPos=0 length=4
at java.lang.System.arraycopy(Native Method)
at java.lang.String.getChars(String.java:894)
at doubleKiller.killRepeater(Main.java:23)
at useThings.main(Main.java:49)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.aide.ui.build.java.RunJavaActivity$1.run(SourceFile:108)
at java.lang.Thread.run(Thread.java:862)
告訴我,我的錯誤...提前
在循環的第一次迭代中,counter是零,所以'catchStr [counter-1]'試圖獲取索引爲'-1'的元素。 –
除了Joe Clay所說的之外,你可能需要修改你的條件以說明你的循環何時開始,這樣你就不會出界。 – Chad