B
barodscheff
Gast
Hallo liebes Forum,
ich komme momentan bei einer Hausaufgabe nicht weiter und hoffe das mir hier jemand behilflich sein kann. Ich muss eine CSV-Datei mit beliebig vielen Zeilen und Spalten (Termine) auslesen, in einer verketteten Liste abspeichern und anschließend nach Datum sortiert ausgeben.
Hier mal die wichtigsten Fakten:
Was ich schon habe:
Termin.java
LinkedList.java
Program.java
Die List.java erklärt sich von alleine, deshalb habe ich sie hier weggelassen.
Mein Problem ist momentan, dass das Einlesen der csv-Datei nicht funktioniert und folgender Fehler erscheint:
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at LinkedList.einlesen(LinkedList.java:57)
at Programm.main(Programm.java:9)
Wenn das funktioniert bin ich auch etwas ratlos wie ich das mit der Liste umsetze. Habt ihr Ideen oder Tipps?
LG
ich komme momentan bei einer Hausaufgabe nicht weiter und hoffe das mir hier jemand behilflich sein kann. Ich muss eine CSV-Datei mit beliebig vielen Zeilen und Spalten (Termine) auslesen, in einer verketteten Liste abspeichern und anschließend nach Datum sortiert ausgeben.
Hier mal die wichtigsten Fakten:
Was ich schon habe:
Termin.java
Code:
import java.io.File;
public class Termin {
private String jahr, monat, tag, uhrzeit, ort, beschreibung;
// Konstruktor
Termin(String jahr, String monat, String tag, String uhrzeit, String ort, String beschreibung) {
this.jahr = jahr;
this.monat = monat;
this.tag = tag;
this.uhrzeit = uhrzeit;
this.ort = ort;
this.beschreibung = beschreibung;
}
// Überschreiben der toString-Methode
@Override
public String toString() {
return String.format("%s. %s %s: %s Uhr\nOrt: %s\n%s", tag, monat,
jahr, uhrzeit, ort, beschreibung);
}
}
LinkedList.java
Code:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.StringTokenizer;
public class LinkedList implements List {
@Override
public boolean isEmpty() {
return false;
}
@Override
public int length() {
return 0;
}
@Override
public Termin firstTermin() {
return null;
}
@Override
public List insert(Termin x) {
return null;
}
@Override
public List delete(Termin x) {
return null;
}
// Einlesen der csv-Datei
// Scanner init
Scanner scan;
// Konstruktor zum Einlesen
LinkedList(File datei) {
// try-catch überprüft ob Datei überhaupt vorhanden
try {
scan = new Scanner(datei);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public Termin einlesen() {
while(scan.hasNextLine()) {
String line = scan.nextLine();
StringTokenizer tokenizer = new StringTokenizer(line, ";");
String jahr = tokenizer.nextToken(),
monat = tokenizer.nextToken(),
tag = tokenizer.nextToken(),
uhrzeit = tokenizer.nextToken(),
ort = tokenizer.nextToken(),
beschreibung = tokenizer.nextToken();
return new Termin(jahr, monat, tag, uhrzeit, ort, beschreibung);
}
return null;
}
public void schliessen() {
scan.close();
}
}
Program.java
Code:
import java.io.File;
public class Programm {
public static void main(String[] args) {
File datei = new File("C://Users//Pawel//SkyDrive//3 - Uni//2. Semester//Programmieren 2//Übungen//test.csv");
LinkedList linkedList = new LinkedList(datei);
Termin termin = linkedList.einlesen();
System.out.println(termin.toString());
linkedList.schliessen();
}
}
Die List.java erklärt sich von alleine, deshalb habe ich sie hier weggelassen.
Mein Problem ist momentan, dass das Einlesen der csv-Datei nicht funktioniert und folgender Fehler erscheint:
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at LinkedList.einlesen(LinkedList.java:57)
at Programm.main(Programm.java:9)
Wenn das funktioniert bin ich auch etwas ratlos wie ich das mit der Liste umsetze. Habt ihr Ideen oder Tipps?
LG