Hallo,
ich habe zu einem Array-Überlauf (ArrayIndexOutOfBoundsException), Probleme beim Abfangen und hoffe, das mir jemand helfen kann.
Meine fussgesteuerte Schleife (Zeile 20) arbeitet alle Tokens ab und überschreitet am Ende das Token-Array.
Alle meine Bemühungen, dass meine Schleife nicht über die Array-Grenze hinweg läuft, waren nicht von Erfolg gekrönt.
Ich habe statt (i+1+j) < tokens.length (Zeile 20) auch tokens[i+1+j] != null oder i-2 < tokens.length-1 versucht.
Selbst in meiner Verzweifelung habe ich !tokens.isEmpty() versucht. Aber nichts hilft an dieser Stelle.
Was mache ich falsch?
LG
ich habe zu einem Array-Überlauf (ArrayIndexOutOfBoundsException), Probleme beim Abfangen und hoffe, das mir jemand helfen kann.
Java:
try{
for(int i=0; i < tokens.length; i++){
[...]
// Schaut im Zeilen-Stream, ob das Key-Word "Telefon, Mobile, etc." vorkommt
else if(tokens[i].matches("[Tt]el[\\.]?[:]?|[Tt]elefon[:]?|[Mm]obil[e]?[:]?|[Hh]andy[:]?") &&
tokens[i+1].matches("^(\\+|\\()?[\\+0-9-_/\\(\\)]+") && (i < tokens.length-1)){
[...]
//Eine Splitt-Funktion hat zuvor alle Nummern (getrennt durch Leerzeichen) gehakt und müssen
//nun wieder zu einer Nummer zusammengesetzt werden.
else if(tokens[i+1].length() < 6 && i < tokens.length-1){
int j=0; //Schaut auf das übernächste Token, ob eine Zahl vorhanden ist
//prüfe hintereinander alle Tokens auf Nummerig
do{
j++;
telNr += tokens[i+j]; //Key-Word ist token[i]. Folge-Token ist Nummer token[i+1] (i+j)
[...]
//Prüfe, ob übernächstes Token token[i+2] (i+1+j) auch eine Nummer ist!
}while(tokens[i+1+j].matches("[0-9-/]+") && (i+1+j) < tokens.length);
// Tokens werden abgearbeitet. Nach dem letzten Token-Element token.legth-1 wird die
// nächste Anweisung print nicht ausgeführt und die ArrayOutOfBoundsException gezeigt.
System.out.print("Nummernausgabe: "+telNr);
}
[...]
}
}catch(ArrayIndexOutOfBoundsException e){
System.err.print("Das TokenArray wurde überschritten! "+e);
}
Meine fussgesteuerte Schleife (Zeile 20) arbeitet alle Tokens ab und überschreitet am Ende das Token-Array.
Alle meine Bemühungen, dass meine Schleife nicht über die Array-Grenze hinweg läuft, waren nicht von Erfolg gekrönt.
Ich habe statt (i+1+j) < tokens.length (Zeile 20) auch tokens[i+1+j] != null oder i-2 < tokens.length-1 versucht.
Selbst in meiner Verzweifelung habe ich !tokens.isEmpty() versucht. Aber nichts hilft an dieser Stelle.
Was mache ich falsch?
LG
Zuletzt bearbeitet: