Итак, я создаю класс для «MiniString», который просто полон методов экземпляра для объекта MiniString, каждая MiniString имеет переменную экземпляра, которая является char []. При тестировании моих методов, я не могу найти, где я ошибаюсь с моим методом substring (). Есть два метода подстроки, где один принимает параметр типа int, а другой - два параметра типа int. Я продолжаю получать ошибку в методе с одним параметром int. Предполагается, что метод substring возвращает новую MiniString, сформированную из символов между позицией в целевой Ministring, указанной параметром int, и концом целевой MiniString. Ошибка, которую я продолжаю получать в своем тестере JUnit, заключается в следующем:
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++;
}
}
и вот код для двух методов substring ():
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;
}
Спасибо за вашу помощь!