所以我創建了一個「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