Hallo!
Also ich bin am Verzweifeln... Ich hab den Fehler bereits gefunden (bzw eingegrenzt), hab ich gerade überhaupt keinen Plan wie ich ihn beheben könnte!
Es geht um ein Rundenzeiten-Verarbeitungs-Programm für einen Lauf, das aus einer .txt Datei (simuliertes Log-File einer Zeitnehmung) gewisse Zeilen einliest, verarbeitet, sortiert und wieder ausgibt.
Aufbau der Zeilen ist dabei für das konkrete Problem jetzt irrelevant, wichtig ist nur ich bekomme alle Zeilen die auch wirklich einen Lauf (eine Runde) enthalten in Form "Run:Startnummer:Rundenzeit" bereits in einem Array zur Weiterverarbeitung.
Das Array ist dabei unsortiert und jeder Läufer (Startnummer) kann auch mehrfach (mehrere Runden) vorhanden sein.
(aus vorherigem Code entstandene variablen:
int anzahlLaeufe = 18
date ist ein beliebiger String
laenge ist ein double-Wert
)
also was hier passieren soll:
zuerst wird mal das Array der Läufe aufgespalten wird in seine Komponenten
dann wird in der for-Schleife (for(int laufvar=0; laufvar < laeufeList.size(); laufvar++)) überprüft ob der Läufer-Name (Startnummer) schon vorhanden ist
wenn ja - addet nur eine Zeit zu dessen ArrayList mit namen rundenZeitenList und gibt "time added" aus
wenn nein - addet den neuen Läufer und gibt "runner added" aus
jetzt kommen wir auch gleich zur Fehlermeldung:
die Ausgabe bis dahin sieht folgender maßen aus:
Der Fehler ist also anscheinend, das versucht wird weitere Läufer zu Adden, obwohl dafür keinen Informationen mehr vorhanden sind.
Das hab ich jetzt versucht durch die letzte if-Abfrage und die variable verschLaeufer zu lösen, aber offensichtlich ja ohne Erfolg...
Hab ich das Problem überhaupt richtig erkannt?
Was kann ich dagebgen tun?
Bitte um Hilfe!
lg
Also ich bin am Verzweifeln... Ich hab den Fehler bereits gefunden (bzw eingegrenzt), hab ich gerade überhaupt keinen Plan wie ich ihn beheben könnte!
Es geht um ein Rundenzeiten-Verarbeitungs-Programm für einen Lauf, das aus einer .txt Datei (simuliertes Log-File einer Zeitnehmung) gewisse Zeilen einliest, verarbeitet, sortiert und wieder ausgibt.
Aufbau der Zeilen ist dabei für das konkrete Problem jetzt irrelevant, wichtig ist nur ich bekomme alle Zeilen die auch wirklich einen Lauf (eine Runde) enthalten in Form "Run:Startnummer:Rundenzeit" bereits in einem Array zur Weiterverarbeitung.
Das Array ist dabei unsortiert und jeder Läufer (Startnummer) kann auch mehrfach (mehrere Runden) vorhanden sein.
(aus vorherigem Code entstandene variablen:
int anzahlLaeufe = 18
date ist ein beliebiger String
laenge ist ein double-Wert
)
Java:
//Einlesen der Runden-Anzahl als integer
Scanner sc = new Scanner(System.in);
ArrayList<Lauf> laeufeList = new ArrayList<Lauf>();
int verschLaeufer = anzahlLaeufe;
for(int i = 0; i < anzahlLaeufe; i++)
{
String[] temp = runs[i].split("\\:");
String name = temp[1];
double temporaryTime = Double.parseDouble(temp[2]) ;
boolean addRunner = true;
System.out.println(laeufeList.size());
for(int laufvar=0; laufvar < laeufeList.size(); laufvar++)
{
if(name.equals(laeufeList.get(laufvar).name))
{
laeufeList.get(laufvar).AddRunde(temporaryTime);
System.out.println("added time at " + laufvar);
addRunner = false;
verschLaeufer--;
}
}
if(addRunner && laeufeList.size() <= verschLaeufer)
{
//gibt der ArrayList welche die Läufer speichern soll, einen
//Eintrag LAUF, für den eben erstellten Läufer
laeufeList.add(new Lauf(name, date, laenge));
Lauf aktuellerLauf = laeufeList.get(i);
aktuellerLauf.AddRunde(temporaryTime);
System.out.println("added runner");
}
}
also was hier passieren soll:
zuerst wird mal das Array der Läufe aufgespalten wird in seine Komponenten
dann wird in der for-Schleife (for(int laufvar=0; laufvar < laeufeList.size(); laufvar++)) überprüft ob der Läufer-Name (Startnummer) schon vorhanden ist
wenn ja - addet nur eine Zeit zu dessen ArrayList mit namen rundenZeitenList und gibt "time added" aus
wenn nein - addet den neuen Läufer und gibt "runner added" aus
jetzt kommen wir auch gleich zur Fehlermeldung:
Code:
Unexpected Error: java.lang.IndexOutOfBoundsException: Index: 16, Size: 10
die Ausgabe bis dahin sieht folgender maßen aus:
Code:
Datum = 12112010
Streckenlänge = 120.13
0
added runner
1
added runner
2
added runner
3
added runner
4
added runner
5
added runner
6
added runner
7
added runner
8
added runner
9
added time at 1
9
added time at 4
9
added time at 2
9
added time at 0
9
added time at 5
9
added time at 6
9
added time at 7
9
Unexpected Error: java.lang.IndexOutOfBoundsException: Index: 16, Size: 10
Der Fehler ist also anscheinend, das versucht wird weitere Läufer zu Adden, obwohl dafür keinen Informationen mehr vorhanden sind.
Das hab ich jetzt versucht durch die letzte if-Abfrage und die variable verschLaeufer zu lösen, aber offensichtlich ja ohne Erfolg...
Hab ich das Problem überhaupt richtig erkannt?
Was kann ich dagebgen tun?
Bitte um Hilfe!
lg