Also ich erstelle eine Klasse für "MiniString", die nur voll von Instanzmethoden für das Objekt MiniString ist, jeder MiniString hat eine Instanzvariable, die ein char [] ist. Beim Testen meiner Methoden kann ich mit meiner substring() -Methode nicht herausfinden, wo ich falsch liege. Es gibt zwei Teilstring-Methoden, von denen eine den Parameter int und die andere zwei int-Parameter verwendet. Ich bekomme den Fehler auf der einen int-Parameter-Methode. Die Substring-Methode soll einen neuen MiniString aus den Zeichen zwischen der Position im Ziel-Ministring, der durch den Parameter int angegeben ist, und dem Ende des Ziel-MiniStrings zurückgeben. Der Fehler halte ich in meinem JUnit Tester bekommen ist folgende:ArrayIndexOutofBoundsException Fehler, aber weiß nicht warum
java.lang.ArrayOutofBoundsException:22
at MiniString.substring(MiniString.java:141)
at MiniString.substring(MiniString.java:159)
Hier sind meine Konstrukteure für das Objekt 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++;
}
}
und hier ist der Code für die beiden Teilketten() Methoden:
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;
}
Danke für Ihre Hilfe!
Verwenden Sie die Informationen die Ausnahme, dir gibt. Auf welche Linie weist die Ausnahme hin, d. H. Welche Linie ist die Linie 22? Welcher Arrayzugriff wird dort versucht? Setzen Sie jetzt einen Haltepunkt oder fügen Sie direkt vor dieser Zeile eine Druckmarke ein, um Ihnen den zu verwendenden Index und die Array-Länge des Arrays, auf das Sie zugreifen, anzuzeigen. Wenn Sie es immer noch nicht herausfinden können, dann geben Sie diese Information in Ihrer Frage an ("... Ich habe Zeile 22 markiert, wo es heißt: // Zeile 22 - Ausnahme löst hier aus." Ich fügte ein println hinzu und es zeigte, dass der Index ist XXX und die Array-Länge ist XXX. Ich verstehe nicht warum ... " –