所以我创建了一个“MiniString”类,它只是充满了对象MiniString的实例方法,每个MiniString都有一个实例变量,它是一个char []。在测试我的方法时,我找不到我的substring()方法出错的地方。有两个substring方法,其中一个接受int参数,另一个接受两个int参数。我不断收到一个int参数方法的错误。 substring方法应该返回由int参数指定的目标Ministring中的位置与目标MiniString的结尾之间的字符组成的新MiniString。我不断收到在我的JUnit测试的错误是:ArrayIndexOutofBoundsException错误,但不知道为什么
java.lang.ArrayOutofBoundsException:22
at MiniString.substring(MiniString.java:141)
at MiniString.substring(MiniString.java:159)
这里是我的对象MiniString构造函数:
private char[] miniscule;
MiniString(char[] array){
int i = 0;
miniscule = new char[array.length];
while (i < array.length){
miniscule[i] = array[i];
i++;
}
}
MiniString(String string){
int i = 0;
miniscule = new char[string.length()];
while (i < string.length()){
this.miniscule[i] = string.charAt(i);
i++;
}
}
,并在这里对两个子代码()方法:
public MiniString substring(int start, int end){
int i = start;
if (end > start){
char[] temp = new char[end - start];
MiniString range = new MiniString(temp);
while (i < end){
range.miniscule[i] = this.miniscule[i];
i++;
}
return range;
}
else{
char[] temp = new char[1];
MiniString range = new MiniString(temp);
range.miniscule[0] = 0;
return range;
}
}
public MiniString substring(int position){
int start = position;
int end = this.miniscule.length;
char[] temp = new char[end - start];
MiniString output = new MiniString(temp);
output = substring(start, end);
return output;
}
感谢您的帮助!
使用例外是给你的信息。哪一行是指向的异常,即哪一行是第22行?在那里试图访问哪个阵列?现在在该行之前设置一个断点或添加一个println,以向您显示您要使用的索引以及您正在访问的数组的array.length。如果你仍然无法弄清楚,那么在你的问题中提供这些信息(“...我在第22行标注了'// 22行 - 异常在这里抛出'。我添加了一个println,它显示索引是XXX,数组长度是XXX,我不明白为什么......“ – 2010-11-20 20:11:17