Hallo.
Ich hab ein problem, und sehe einfach meinen Fehler nicht.
Ich habe ein kleines Programm fuer die Uni geschrieben, dass prinzipiell als mini Datenbank fungiert.
Dabei werden Stringcodes in der Form Name$Vorname$.... in einer Datei gespeichert. Diese soll dann ausgelesen werden, aus den einzelnen Datensaetzen von Leuten sollen dann Objekte Erstellt werden, die in einem Array zurueckgegeben werden.
Soweit so gut.
Mein problem ist, er macht das alles prinzipiell schon.
Solange ich nur einen Datensatz in der Datei drin hab, funktioniert alles einwandfrei.
Sind aber z.B. 2 Datensaetze in der Datei, werden die Daten, die ich im ersten Durchlauf erstellt habe, im zweiten Schleifendurchlauf einfach von den daten des Zweiten durchlaufs ersetzt, und ich nicht die leisetste ahnung warum...
Ich mache hierbei nichts anderes, als den String, den ich von der Datei bekomme, nach einem bestimmten Schema aufzuteilen (das funktioniert einwandfrei, das hab ich getestet, daran kanns nicht liegen) und dann mit einer anderen Methode in einer anderen Klasse das Objekt zu erstellen ,dieses in das Array einzufuegen und zurueck zu geben.
Der Fehler muss, meines Erachtens nach, hier liegen:
ApplicationData applicationData = ApplicationWorker.createApplicationFromString(application);
Denn wenn ich davor und dahinter ein System.out setzte, erhalte ich folgende Ausgabe:
vor
nach Elnaser
vor Elnaser
nach Elnaser2
vor Elnaser2
nach Elnaser3
Kann mir jemand sagen, wo mein dummer Fehler ist? Ich hab gestern echt 6 Stunden nur an dem bisschen ueberlegt und komme nicht auf die Loesung...
Danke!
Ich hab ein problem, und sehe einfach meinen Fehler nicht.
Ich habe ein kleines Programm fuer die Uni geschrieben, dass prinzipiell als mini Datenbank fungiert.
Dabei werden Stringcodes in der Form Name$Vorname$.... in einer Datei gespeichert. Diese soll dann ausgelesen werden, aus den einzelnen Datensaetzen von Leuten sollen dann Objekte Erstellt werden, die in einem Array zurueckgegeben werden.
Soweit so gut.
Mein problem ist, er macht das alles prinzipiell schon.
Solange ich nur einen Datensatz in der Datei drin hab, funktioniert alles einwandfrei.
Sind aber z.B. 2 Datensaetze in der Datei, werden die Daten, die ich im ersten Durchlauf erstellt habe, im zweiten Schleifendurchlauf einfach von den daten des Zweiten durchlaufs ersetzt, und ich nicht die leisetste ahnung warum...
Java:
public static ApplicationData[] getApplicationDataFromIndexFile(String jobChoice, boolean isMaster) throws IOException {
String tmpFileContent = FileWorker.getFileContent(new File(getIndexPathFromJobChoice(jobChoice, isMaster)));
String[] fileContent = tmpFileContent.split("\\%\\%\\£\\£"); // Aufteilung einzelner Datensaetze
//splitting the single application file Strings into applicationData and jobs
ApplicationData[] result = new ApplicationData[fileContent.length];
for (int i = 0; i < fileContent.length; ++i) {
String[] reduceToSingleApplication = fileContent[i].split("\\£\\£"); // Aufteilung in Datensatz und Speicherpfad
String application = reduceToSingleApplication[0]; // Speichern des Datensatzes
//Erstellung des Objekts
ApplicationData applicationData = ApplicationWorker.createApplicationFromString(application);
// Einfuegen des Objekts in das result array
result[i] = applicationData;
}
return result;
}
Ich mache hierbei nichts anderes, als den String, den ich von der Datei bekomme, nach einem bestimmten Schema aufzuteilen (das funktioniert einwandfrei, das hab ich getestet, daran kanns nicht liegen) und dann mit einer anderen Methode in einer anderen Klasse das Objekt zu erstellen ,dieses in das Array einzufuegen und zurueck zu geben.
Java:
public static ApplicationData createApplicationFromString(String input) {
ApplicationData applicationData = new ApplicationData();
String[] fileContent = input.split("\\§");
applicationData.setAnrede(fileContent[1]);
applicationData.setName(fileContent[2]);
applicationData.setVorname(fileContent[3]);
applicationData.setStrasse(fileContent[4]);
applicationData.setPlz(fileContent[5]);
applicationData.setOrt(fileContent[6]);
applicationData.setLand(fileContent[7]);
applicationData.setGeburtsdatum(fileContent[8]);
return applicationData;
Der Fehler muss, meines Erachtens nach, hier liegen:
ApplicationData applicationData = ApplicationWorker.createApplicationFromString(application);
Denn wenn ich davor und dahinter ein System.out setzte, erhalte ich folgende Ausgabe:
vor
nach Elnaser
vor Elnaser
nach Elnaser2
vor Elnaser2
nach Elnaser3
Kann mir jemand sagen, wo mein dummer Fehler ist? Ich hab gestern echt 6 Stunden nur an dem bisschen ueberlegt und komme nicht auf die Loesung...
Danke!
Zuletzt bearbeitet: