Kann Ziffer die am Ende einer Zeile steht (.txt) nicht in int übersetzen

plissk3n

Mitglied
Hey Leute habe ein kleines Problem bei dem ich nicht weiterkomme.
Eigentlich sagt der Titel schon alles und eigentlich funktioniert mein Programm soweit auch.
Das Programm soll die Daten von Studenten die in einer Textdatei gespeichert sind in einem Datentyp Student abspeichern. Dies für jeden Studenten einzelnd.
Meine Textdatei sieht folgendermaßen aus:

Schwarzenegger, Arnold, 30.7.1947, 11071234, 6
Lee, Bruce, 27.11.1940, 11075392, 4
McClane, John, 19.3.1955, 11074634, 2
Rambo, John. J, 6.7.1946, 11043581, 5
Martin, Frank, 12.9.1967, 10998431, 7

Wobei die Datentypen folgendermaßen verteilt sind: String, String, Date, int, int

Mein Programmcode:
Java:
        In datei = new In(args[0]);
        String[] studentenString = datei.readAll().split("\n");
        Student[] studentenStudent = new Student[studentenString.length];
        
        for(int i=0; i<studentenString.length; i++){
            String[] daten = studentenString[i].split(", ");
            
            String name = daten[0];
            String vorname = daten[1];
            Datum geburtstag = new Datum(daten[2]);
            int matnr = Integer.parseInt(daten[3]);
            int semester = Integer.parseInt(daten[4]);
            
            studentenStudent[i] = new Student(name, vorname, geburtstag, matnr, semester);
        }

Die Fehlermeldung besagt, dass er die 6 (aus der Textdatei erste Zeile letzte Ziffer) nicht in ein int übersetzen kann. Warum? Hat das was mit dem Zeilenumbruch zu tun? habe ich den nicht durch das splitten mit "\n"weggemacht? Wenn ich in der Text datei überall noch ein , dranhänge funktioniert es...

Kann mir jemand das erklären?
Danke!!!
 
Verwende an Stelle von [c].split("\n")[/c] einfach mal [c].split("\r?\n")[/c]. Unter Windows hast du nämlich normalerweise nicht nur [c]\n[/c] sondern [c]\r\n[/c]. An Stelle von [c].split("\r?\n")[/c] wär aber IMHO [c].split("\\r?\\n")[/c] korrekter (die Zeichen werden erst in Regex und nicht vom Compiler umgesetzt).
 
Hey,
bin noch im ersten Semester und habe von einem BufferedReader noch nie was gehört, werde ich mich gleich mal drüber schlau machen.
Da wir aber bisher immer den Datentyp "In" verwendet haben (ist der eigentlich bekannt oder eher ein Exot?) glaube ich schon, dass es irgendwie gehen müsste.
Hast aber recht, wenn ich den String direkt eingebe (nich über Textdatei) dann klappt es...

Wie kann ich das denn umgehen?
Gruß

//edit:
@ faetzminator, danke, habe ich gar nicht gesehen. Probier ich mal aus. Was ist denn "\r"?
 
Zuletzt bearbeitet:
Java:
System.getProperty("line.separator")
wäre auch ein Versuch wert, aber ich bin nach wie vor für BufferedReader. *.*

In ist kein Teil der JRE von Oracle.
 
Soooo...
("\r?\n") funktioniert! Danke dafür!
Jetzt werde ich mich mal ein bisschen über BufferedReader, Regex und LineSperatoren schlau machen 😀
Gruß!
 
Da wir aber bisher immer den Datentyp "In" verwendet haben (ist der eigentlich bekannt oder eher ein Exot?) glaube ich schon, dass es irgendwie gehen müsste.
Das ist irgend eine Bullsh*t-Klasse deiner Uni/Schule/Lehrbuch, also sozusagen ein Exot 😉
//edit:
@ faetzminator, danke, habe ich gar nicht gesehen. Probier ich mal aus. Was ist denn "\r"?

\r = Wagenrücklauf
\n = Zeilenvorschub
Wie damals bei der Schreibmaschine 😉

Volvagia hat gesagt.:
Java:
System.getProperty("line.separator")
wäre auch ein Versuch wert, aber ich bin nach wie vor für BufferedReader. *.*
Sowas schreib ich nie. Warum? Das Format der Datei muss überhaupt nicht mit dem Systemstandard übereinstimmen. Zumindest ich verwende Win und Linux - da ist so was überhaupt nicht optimal.
 
Sowas schreib ich nie. Warum? Das Format der Datei muss überhaupt nicht mit dem Systemstandard übereinstimmen. Zumindest ich verwende Win und Linux - da ist so was überhaupt nicht optimal.

tut es gerade unter windoof nicht. Kommt öfters vor, dass ich ausversehen mal eine Datei im Win-Editor öffne und den schönen Effekt habe, dass ich keine Umbrüche habe.
 
Der Regexp funktionert natürlich allgemein, aber ich möchte doch wieder einmal darauf aufmerksam machen, dass man, wenn es schon chracter sein sollen, der Portabilität zuliebe

Java:
	public static final String systemLineSeparator = System.getProperty("line.separator");

verwenden sollte.
 

Zurück
Oben