我想制作一个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