CSV File - "Vergleichen und Sortieren"

Syrghar

Mitglied
Hallo,

wir haben im Studium eine Aufgabe erhalten zum Thema "Vergleichen und Sortieren". (Programmieranfänger)
Die Applikation soll ein CSV File einlesen, von jedem Eintrag aus dem File sollen nur bestimmte Daten ausgegeben und sortiert werden.

Im File stehen die Infos folgendermaßen:
"Betreff","Beginnt am","Beginnt um","Endet am","Endet um","Ort","Kategorien"
"CommEng / Vortragender/
PA","27.03.2015","12:15:00","27.03.2015","13:45:00","K.WS46B.205 SE205","FH-Stundenplan"
"DatStAlg / Vortragender / G1","07.03.2015","08:45:00","07.03.2015","11:00:00","K.WS46B.100 LA100","FH-Stundenplan"


Ausgabe soll in etwa so aussehen:
DatStAlg [VO] Thu Feb 26 18:00:00 CET 2015--240 min
NetzMana [VO] Fri Feb 27 14:00:00 CET 2015--135 min

Das Einlesen des CSV files war nicht so das Problem, jedoch hänge ich jetzt bei der eigentlichen Aufgabe, die Daten richtig aufzubereiten und zu sortieren. Habe ehrlich nichtmal richtig eine Idee wie ich das machen könnte.

Bisher gibt es folgenden Code:
Main
Java:
public class CompareSort {
	
	public static void main(String[] args)
	{	
		//Create a ReadCSV object 
		ReadCSV read = new ReadCSV();
		
		//Class to compare and sort the list of lectures and show it
		Display list = new Display(read.getList());
		
		System.out.println(list.getSearch());
		
	}

}

ReadCSV
Java:
public class ReadCSV {
	
	private CSVReader reader = null;
	private List<String> v_list = new LinkedList<String>(); //hold the content from CSV file
	
	 {
		 try
		 {
			 //Get the CSVReader instance with specifying the delimiter to be used
			 reader = new CSVReader(new FileReader("stundenplan.txt"),',');
			 String[] nextLine;
			 
			 //Read one line at a time
			 while ((nextLine = reader.readNext()) != null)
			 {
				 for(String v_token : nextLine)
				 {
					//Add all tokens to the list List<String>
					v_list.add(v_token);
				 }
			 }
		 }
		 catch (Exception e) 
		 {
			 e.printStackTrace();
		 }
		 finally 
		 {
			 try 
			 {
				 reader.close();
			 } 
			 catch (IOException e) 
			 {
				 e.printStackTrace();
			 }
	
			 
		 }

	 }
	 
	 /**
	 * Getter method to grab the list List<String>
	 * @return
	 */
	 public List<String> getList()
	  {
	    return v_list;
	  }
}

Display
Java:
public class Display{
	
	private List<String> p_read;
	
	
	/**
	 * Constructor
	 * 
	 * Checks first if forwarded parameter is null. If yes, shows a NullPointerException.
	 * Next set "p_read" = read parameter
	 * 
	 * @param read
	 */
	public Display(List<String> read)
	{
		if (read == null)
		{
			throw new NullPointerException();
		}
		this.p_read = read;
		
		
		//System.out.println(p_read);
		
	}
	
	/**
	 * Method add the list in the needed sequence
	 * @return
	 */
	public List<String> search()
	{
		
		
		return p_read;
	}
	
	/**
	 * Getter method to grab the list List<String>
	 * @return
	 */
	public List<String> getSearch()
	{
		return p_read;
	}
}

Wäre für Hilfe echt dankbar.


Mfg. Syrghar
 
Sorry, dass ich mich erst jetzt melde! War in den vergangenen Tagen ein wenig krank.

Die Lehrveranstaltungen sollen nach Beginnzeit sortiert werden. Wenn zwei Veranstaltungen zugleich beginnen dann soll noch alphabetisch sortiert werden.

Bin mittlerweile auch weitergekommen. Bekomme so im Code keine Fehler mehr angezeigt, jedoch wenn ich das Programm ausführen will kommt folgendes.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at at.fhj.swd.Display.<init>(Display.java:59)
at at.fhj.swd.CompareSort.main(CompareSort.java:33)

Wenn ich das richtig verstehe kommt es zu diesem Fehler, wenn auf einen Index außerhalb des Definitionsbereichs eines Arrays zugegriffen wird.

Der Code sieht so aus:
Java:
public class CompareSort 
{
	
	public static void main(String[] args)
	{	
		//Create a ReadCSV object 
		ReadCSV read = new ReadCSV();
		
		
		String[] str_array = read.getList().toArray(new String[read.getList().size()]);
		
		//Class to compare and sort the list of lectures and show it
		System.out.println(str_array.length);
		Display course = new Display(str_array);
	
		System.out.println(course.toString());
		
		
		
	}

}

Zeile 33 wäre hier jetzt:
Java:
Display course = new Display(str_array);

Display Zeile 59 wäre:
Java:
this.lecturer = courseInfo[1];

Versteh nicht was hier falsch ist. Wenn ich mir in der Zeile oberhalb die Länge des Array ausgeben lasse kommt 1981 heraus.
 
Zuletzt bearbeitet:
Hab den Fehler gefunden.

In der Display Klasse gibt es ein Array, das die Infos zum Kurz speichert (Kurs, Vortragender, Kursbezeichnung).
Weiter unten, bei der Feststellung der Zeit hab ich dann auf dieses Array zugegriffen und nicht auf das mit allen Daten. Dieses Kurs Array hatte natürlich mit Index 4 nichts, bei nur 3 Einträgen.

Muss nun noch alle Einträge ausgeben über ne Schleife und sortieren.
 

Neue Themen


Zurück
Oben