Alles was ich in dem code sehe, was nicht ok ist, ist die Zeile 5
P.S.
ich glaube es muss heißen:
Java:
DeinObjekt objekt =newDeinObjekt();
objekt.setName(splitString[0]);
objekt.setAdresse(splitString[1]);
objekt.setAlter(splitString[2]);
rom1[i]= objekt;
wobei in solchen fällen sollte man List, ArrayList nehmen sonst muss du dein array[] mit richtigen Größe initialisieren, oder du findest raus wieviele Zeilen die Datei hat.
Das mit Zeile 5 ist schon in Ordnung.
Ich möchte das die erste Zeile einfach übersprungen wird, da in Ihr keine Daten sonden die Spaltenüberschriften stehen.
Das Array wird in der Klasse initialisiert:
Java:
Teilnehmer[] rom1 =newTeilnehmer[20]
Die Fehlermeldung
Exception in thread "main" java.lang.NullPointerException45
at Verwaltung.datenAusDateiLesen(Verwaltung.java:1744)
Bezieht sich hier auf Zeile 14:
Java:
publicvoiddatenAusDateiLesen(){try{BufferedReader br =newBufferedReader(newFileReader("Rom Woche1.csv"));String str = br.readLine();while((str = br.readLine())!=null){for(int i =0; i < rom1.length; i++){String[] splitString = str.split(";");System.out.println(splitString[0]);System.out.println(splitString[1]);System.out.println(splitString[2]);
rom1[i].setName(splitString[0]);
rom1[i].setAdresse(splitString[1]);
rom1[i].setAlter(splitString[2]);}}}catch(IOException e){System.out.println("Datei konnte nicht gelesen werden!");}}
Ich hoffe ihr könnt mir nun helfen.
Werde aus euren bisherigen Antworten leider nicht schlau :-(
Auch wenn ich immernoch nicht verstehe, da ich der Meinung bin da rom1[] schon deklariert wurde muss rom1 auch zur Verfügung stehen.
Aber: Der Fehler ist jetzt tatsächlich weg.
Jetzt habe ich aber ein neues Problem.
Ich lande in einer Endlosschleife.
Warum?
Irgendwann ist das Array zu Ende => for-Schleife kann keine Endlosschleife sein
Irgendwann is die Datei zu ende => while-Schleife kann auch keine Endlosschleife sein
Das verstehe ich nicht ganz.
Wenn ich nen String deklariere steht in diesem doch auch null.
Und dann kann ich über eine Konsoleneingabe ganz easy was in den String reinschreiben.
Warum klappt das denn dann beim SplitString nicht? :-(
Dabei schreibst Du nichts in ein existierendes String-Objekt (das ginge auch nicht, weil Strings nicht geändert werden können), sondern weist der vorher deklarierten String-Variablen einen neuen Wert zu.
Hier rufst Du aber Methoden an den noch nicht initialisierten Array-Elementen auf - und das geht eben nicht. Das geht auch bei String nicht:
Java:
String str =null;int a = str.length();//--- NullPointerException
Ein Array ist ein leerer Behälter, der bestimmte Objekte "aufnehmen" kann - wie ein leerer Kasten Bier. Wenn man nun aus einer Flasche trinken will, muss an dieser Stelle auch eine Flasche sein, sonst greift man ins Leere ==> null.
Strings sind immutable und besonderer Objekte, daher kann man Stringvariablen direkt eine Referenz auf eine Zeichenkette zuweisen ohne explizit ein neues Objekt zu erzeugen.
Ansonsten hat das nichts mit dem SplitString zu tun, sondern mit nicht vorhandenen Teilnehmer Objekten.