Hallo,
ich habe gerade nach mehreren Stunden einen Fehler in meinem Programm behoben, den ich mir jedoch immernoch nicht so recht erklären kann. Meine Ausgangslage:
Ich schreibe eine Software zum Verwalten von Urlaubsdaten für Mitarbeiter. Die Klasse "Mitarbeiter" hat die Attribute Name, Abteilung sowie startDatum (Vector<Date>) und endDatum (Vector<Date>).
Um diese daten zu bündeln habe ich mir nun zwei Vector-Arrays geschaffen:
"mitarbeiter" ist hier auch ein Vector, der alle Objekte vom Typ Mitarbeiter enthält.
Nun wollte ich die startDates und endDates einlesen und habe dazu eine Schleife wie folgt benutzt:
(der Code ist an sich noch etwas komplexer, ich habe 2 geschachtelte for-Schleifen statt nur einer usw.)
Ich dachte mir, das es ja so laufen müsste, aber ich bekam stets den merkwürdigen Fehler, dass startDates[0] außerhalb dieser Schleife nicht mehr abrufbar war. startDates[1] bis startDates[n] jedoch schon.
Ich hab also einige Stunden probiert und überlegt und hab vorhin irgendwann einmal einfach die Initialisierung der Vector-Arrays separat gemacht:
Und mit dieser Variante hat es dann geklappt. Ich kann jedoch absolut nicht nachvollziehen, warum dies so der Fall ist. Und vor allen Dingen: Warum war nur startDates[0] bzw. endDates[0] nicht abrufbar, alle anderen Elemente des Arrays jedoch schon?
Kann mir da jemand auf die Sprünge helfen?
ich habe gerade nach mehreren Stunden einen Fehler in meinem Programm behoben, den ich mir jedoch immernoch nicht so recht erklären kann. Meine Ausgangslage:
Ich schreibe eine Software zum Verwalten von Urlaubsdaten für Mitarbeiter. Die Klasse "Mitarbeiter" hat die Attribute Name, Abteilung sowie startDatum (Vector<Date>) und endDatum (Vector<Date>).
Um diese daten zu bündeln habe ich mir nun zwei Vector-Arrays geschaffen:
Java:
Vector<Date>[] startDates = new Vector[mitarbeiter.size()];
Vector<Date>[] endDates = new Vector[mitarbeiter.size()];
"mitarbeiter" ist hier auch ein Vector, der alle Objekte vom Typ Mitarbeiter enthält.
Nun wollte ich die startDates und endDates einlesen und habe dazu eine Schleife wie folgt benutzt:
Java:
for(int i = 0; i < mitarbeiter.size(); i++) {
startDates[i] = new Vector<Date>();
endDates[i] = new Vector<Date>();
if(...) {
startDates[i].addAll(mitarbeiter.get(i).getStartDates);
endDates[i].addAll(mitarbeiter.get(i).getEndDates);
}
}
Ich dachte mir, das es ja so laufen müsste, aber ich bekam stets den merkwürdigen Fehler, dass startDates[0] außerhalb dieser Schleife nicht mehr abrufbar war. startDates[1] bis startDates[n] jedoch schon.
Ich hab also einige Stunden probiert und überlegt und hab vorhin irgendwann einmal einfach die Initialisierung der Vector-Arrays separat gemacht:
Java:
for(int i = 0; i < startDates.length; i++) {
startDates[i] = new Vector<Date>();
endDates[i] = new Vector<Date>();
}
// {...}
for(int i = 0; i < mitarbeiter.size(); i++) {
if(...) {
startDates[i].addAll(mitarbeiter.get(i).getStartDates);
endDates[i].addAll(mitarbeiter.get(i).getEndDates);
}
}
Und mit dieser Variante hat es dann geklappt. Ich kann jedoch absolut nicht nachvollziehen, warum dies so der Fall ist. Und vor allen Dingen: Warum war nur startDates[0] bzw. endDates[0] nicht abrufbar, alle anderen Elemente des Arrays jedoch schon?
Kann mir da jemand auf die Sprünge helfen?
Zuletzt bearbeitet: