CSV-Tabelle

CEric

Aktives Mitglied
Hallo, ich soll ein kleines Programm zum Einlesen, Manipulieren und Schreiben von CSV Dateien implementieren, stehe da aber schon zu Beginn vor einigen Problemen, da ich noch nie mit so etwas gearbeitet habe!
Java:
public class CsvTable {
	//Initialisiert eine leere Tabelle und setzt als Trennzeichen das Komma. 
	public CsvTable(){
		char seperator = ',';
		
		String [][] csvtabelle;
		
	}
In dieser ersten Methode sollen wir wie beschrieben eine leere Tabelle erzeugen.
Mein Problem ist folgendes, die Tabelle sollte ein Array oder eine ArrayList sein, was ist damit gemeint, oder wie wird das Trennzeichen denn im array gesetzt, des weiteren ist ein array ja eigentlich statisch, wenn ich aber unterschiedlich lange Dateien habe muss ich ja z.B. die Spaltenzahl variieren können???

Danke
 

M_Schaffrath

Aktives Mitglied
Hast du den Code so bekommen oder selbst geschrieben?

Normalerweise würde ich davon ausgehen, dass der Separator nicht in das Array hineingeschrieben wird, sondern es einmal eine Datenstruktur gibt, die die Inhalte der Tabelle darstellt (z.B. ein Array oder eine ArrayList) und dazu dann eine Variable, unter der das Separatorzeichen abgelegt ist.

Wenn man dann die Daten in die Datei schreibt, wird der entsprechende Separator zwischen die einzelnen Einträge gesetzt.
 

KrokoDiehl

Top Contributor
Mein Problem ist folgendes, die Tabelle sollte ein Array oder eine ArrayList sein, was ist damit gemeint, oder wie wird das Trennzeichen denn im array gesetzt, des weiteren ist ein array ja eigentlich statisch, wenn ich aber unterschiedlich lange Dateien habe muss ich ja z.B. die Spaltenzahl variieren können???

Dafür ist eine ArrayList -bzw. allgemein die Collections von Java- geeigneter weil ihre Größe dynamisch ist. Eine Liste ist aber 1-dimensional, eine Tabelle wie du sie möchtest 2-dim.. Also wäre in diesem Fall eine
Code:
List< List<String> >
notwendig.
Man kann zwar auch mit Arrays "dynamisch" arbeiten, das macht man auch wieder nichts anderes als die ArrayList ;)
 

CEric

Aktives Mitglied
Den Kommentar den du siehst, das ist die Aufgabenstellung zur ersten Methode!
Die weiteren Methoden sind:
Java:
public class CsvTable {
	//Initialisiert eine leere Tabelle und setzt als Trennzeichen das Komma. 
	public CsvTable(){
		char seperator = ',';
		
		String [][] csvtabelle;
		
	}

	/*Initialisiert eine leere Tabelle und setzt das gegebene Trennzeichen. 
	*Es sind nur die Trennzeichen Komma, Semikolon und Doppelpunkt erlaubt. 
	*Wird ein anderes Trennzeichen uebergeben, so ist eine IllegalArgumentException zu werfen. 
	*/
	public CsvTable(Character separator){
		char seperator = ';';
		if(seperator != ',' || seperator != ';' || seperator != ':'){
			throw new IllegalArgumentException("Trennzeichen ist kein Komma, Smikolon oder Doppelpunkt!");
		}
		else;
	}
	
	/*
	 * Speichert den Wert in value in die gegebenen Zeile und Spalte. Zeilen und Spalten werden ab 0 gezaehlt!
	 * Da die Tabelle beliebig groß werden kann, muessen Sie darauf achten die Groeße entsprechend anzupassen. 
	 * Wird ein Wert uebergeben, der das Trennzeichen enthaelt, so soll eine MalformedValueException geworfen werden.
	 * Ebenso sind negative Werte für Zeilen- und Spaltenangaben nicht zugelassen.
	 * In diesem Fall soll eine IllegalArgumentException geworfen werden. 
	 */
	public void setValue(int row, int column, String value){
		
	}
	
	/*
	 * Liefert den in der Zeile row und Spalte column gespeicherten Wert zurueck. 
	 * Bei negativen Eingaben soll eine IllegalArgumentException geworfen werden.
	 * Zeilen und Spalten werden ab 0 gezaehlt! Existiert an dieser Stelle kein Wert, so wir der leere String "" zurueckgegeben. 
	 */
	public String getValue(int row, int column){
		
	}
	
	
	//liefert das Trennzeichen
	public Character getSeparator(){
		
	}
	
	/*
	 * Liefert die Anzahl der benutzten Spalten. Spalten in denen der leere String "" steht gelten nicht als benutzt. 
	 * Ermitteln Sie hier unter allen Zeilen diejenige mit der groeßten benutzten Spalte.
	 */
	public int getColumns(){
		
	}
	
	/*
	 * Liefert die Anzahl der benutzten Zeilen. 
	 * Eine Zeile gilt als genutzt, wenn Sie mindestens einen vom leeren String verschiedenen Wert in einer Spalte besitzt.
	 */
	public int getRows(){
		
	}
	
	//Liefert den aktuellen Stand der Tabelle als String zurueck.
	public String toString(){
		
	}	
	
	
}//Ende Klasse CsvTable
 

M_Schaffrath

Aktives Mitglied
Warum werden da Variablen im Konstruktor deklariert? Die siehst du doch nie mehr wieder. Solltest du die Daten und den Separator nicht vielmehr als Felder der Klasse deklarieren und sie im Konstruktor initialisieren?
 

CEric

Aktives Mitglied
public CsvTable()
Hier liegt ja grundsätzlich mal mein erstes Problem, wie ich oben beschrieben habe, die Tabelle soll ein array oder eine arraylist sein.
Aber wie mache ich das, da ein array normalerweise ja statisch ist!
 

truesoul

Top Contributor
Ausserdem ist der Code im zweiten Konstruktor auch nicht korrekt.
Eine IllegalArgumentException würde in dem fall nie auftretten :)
Und Instanzvariablen sind auch nicht vorhanden, aber das solltet ihr wohl implementieren.
Aber wie mache ich das, da ein array normalerweise ja statisch ist!
Naja entweder verwendest du eine ArrayList oder erweiterst eine Array.
Z.b neues Array erzeugen mit neuer Größe, Werte vom alten Array übernehmen und neue Werte hinzufügen.
 
Zuletzt bearbeitet:

M_Schaffrath

Aktives Mitglied
public CsvTable()
Hier liegt ja grundsätzlich mal mein erstes Problem, wie ich oben beschrieben habe, die Tabelle soll ein array oder eine arraylist sein.
Aber wie mache ich das, da ein array normalerweise ja statisch ist!

Dann nimm, wie schon geschrieben eine ArrayList, die ist nicht statisch.

Java:
ArrayList<String> enememu = new ArrayList<>();

Aber wenn ich den Code im Konstruktor sehe, habe ich nicht den Eindruck, dass du wirklich weißt, was du da tust. Weißt du, wie Attribute aka Klassenvariablen funktionieren? Weißt du, was ein Konstruktor macht und warum deine Implementierung davon fragwürdig ist?

Außerdem solltest du dir vorher klar machen, was du tun willst, bevor du einfach lostippst und dich um Kopf und Kragen codest.
 

CEric

Aktives Mitglied
Ja, ich verstehe eben nicht genau wie das ganze mit nem array funktionieren soll, die größe des arrays müsste ich dann später glaube ich in der setValue verändern!
 

CEric

Aktives Mitglied
Java:
public CsvTable(){
		
		ArrayList<String> tabelle = new ArrayList<>();
		
		}
Ok und was meint das ganze jetzt mit trennzeichen setzten usw?
Hm, du meintest ich soll mich nicht um Kopf und Kragen programmieren, aber so alt bin ich noch nicht was Java angeht, die Aufgabe an sich ist wahrscheinlich gar nicht mal schwer!
 

truesoul

Top Contributor
Ja, ich verstehe eben nicht genau wie das ganze mit nem array funktionieren soll, die größe des arrays müsste ich dann später glaube ich in der setValue verändern!

Naja ein Beispiel wäre z.B sowas:
Java:
static String array [] = {"Eins"};
public static void main ( String[] args ) {
        setValue("Zwei");
}
	
	
static void setValue(String value){
	String array2 [] = new String[array.length+1];
	for(int i = 0; i< array.length;i++){
		array2[i] = array[i];
	}
	array2[array.length] = value;
	array = array2;
}

P.S static erstmal ignorieren.

Oder man schaut sich mal die Klasse Arrays an.
 

M_Schaffrath

Aktives Mitglied
Eine CSV-Datei stellt eine Tabelle dar. Dabei sind die einzelnen Spalten durch ein bestimmtes Zeichen und die einzelnen Reihen durch Zeilenumbrüche getrennt. Dieses "bestimmte" Zeichen kann z.B. ein Semikolon oder ein Komma sein. Allerdings muss es für die Datei einheitlich sein und darf natürlich nicht in den Datensätzen vorkommen. Programme wie Excel können solche Formate lesen und darstellen. Excel-Tabellen können auch im CSV-Format gespeichert werden (CSV steht übrigens für Comma Separated Values, also "durch Kommas getrennte Werte").

Ich gehe einmal davon aus, dass der Sinn der Aufgabenstellung ist, die Werte in einer geeigneten Datenstruktur abzuspeichern und sich dazu zu merken, welches Zeichen das Trennzeichen ist. Auf diese Weise kann man später damit CSV-Dateien schreiben und lesen.

Ich denke nicht, dass das Trennzeichen von anfang an in die Tabelle hineingeschrieben werden soll.

Du solltest dir also zuerst eine geeignete Datenstruktur bauen, die die Tabelleneinträge aufnehmen kann und das Trennzeichen irgendwo festlegen.
 

ARadauer

Top Contributor
Ja, ich verstehe eben nicht genau wie das ganze mit nem array funktionieren soll, die größe des arrays müsste ich dann später glaube ich in der setValue verändern!
ja so würde es funktionieren bzw intern arbeitet eine Liste so. Wenn du eine Wert setzt der ausserhalb deines Arrays ist dann musst du ein neues der entsprechenden größe machen und alle werte umkopieren....

Heißt jetzt dein array oder array list, dass du beides machen musst oder dass du dir es aussuche kannst?
 

CEric

Aktives Mitglied
Hab das ganze erst mal so geschrieben:
Java:
public class CsvTable {
	
	//neue leere Tabelle
	String [][] tabelle = null;
	
	//Initialisiert eine leere Tabelle und setzt als Trennzeichen das Komma. 
	public CsvTable(){
		char trennzeichen = ',';
		tabelle = new String [0][0];
		
		}
	

	/*Initialisiert eine leere Tabelle und setzt das gegebene Trennzeichen. 
	*Es sind nur die Trennzeichen Komma, Semikolon und Doppelpunkt erlaubt. 
	*Wird ein anderes Trennzeichen uebergeben, so ist eine IllegalArgumentException zu werfen. 
	*/
	public CsvTable(Character separator){

                  if(separator != ',' || separator != ';' || separator != ':'){
			throw new IllegalArgumentException("Trennzeichen ist kein Komma, Smikolo
                        oder Doppelpunkt!");
		}
		else;
	}

public void setValue(int row, int column, String value){
	    for(int x = 0; x < tabelle.length; x++){
	        for(int y = 0; y < tabelle.length; y++){
	        	if(tabelle[x][y] != null){
	        		tabelle = new String[x+1][y+1];
	        	}
	        	else;
	        	
	        }
	    }

	}

Meine setValue soll dan wohl i-wei dazu da sein um die Tabelle gegebenenfalls zu erweitern!
 

ARadauer

Top Contributor
Java:
if(tabelle[x][y] != null){
                    tabelle = new String[x+1][y+1];
                }
                else;
das ist ganz falsch... kommentier das mal, bzw schreib dazu was du meinst das hier passiert...
 

CEric

Aktives Mitglied
Also wenn ich eine ArrayList nehme, muss ich ja eine Liste von der Liste machen, um in Tabellenform zu kommen.
Java:
ArrayList<ArrayList<String>> tabelle = new ArrayList();
Wenn ich den Wert value in die Tabelle speichern will, sieht das dann so aus?
Java:
public void setValue(int row, int column, String value) {

		//ich sehe mir die Zeile an, wenn diese nicht vorhanden ist erzeuge ich eine neue!?
		ArrayList<String> rowData = tabelle.get(row);
		if (rowData == null)
			rowData = new ArrayList();

		//Wert in das Feld setzen
		rowData.set(column, value);

		//Zeile zurück in die Tabelle schreiben
		tabelle.set(row, rowData);

	}

Habe ich das so einigermaßen richtig verstanden und gemacht???
MfG
 

CEric

Aktives Mitglied
Also wenn ich das ganze dann mit einer ArrayList mach sieht das so aus oder?!
Java:
ArrayList<ArrayList<String>> tabelle= new ArrayList<ArrayList<String>>();

Und wenn ich dann den Wert value einfüge so:
Java:
public void setValue(int row, int column, String value) {
                  //wenn Zeile noch nicht vorhanden eine anlegen
		ArrayList<String> rowData = tabelle.get(row);
		if (rowData == null)
			rowData = new ArrayList();

		//Wert in das Feld setzen
		rowData.set(column, value);

		//Zeile zurück in die Tabelle schreiben
		tabelle.set(row, rowData);

	}

Und wie bekomme ich denn die Zeilen und Spaltenzahl der Liste als int-Wert?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
P Zweidimensionales Array als Tabelle mit befüllten Zahlen Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
Sonas814 ASCII-Tabelle Java Basics - Anfänger-Themen 2
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
J Autovervollständigung in einer Tabelle Java Basics - Anfänger-Themen 40
RudiRüssel maximale Anzahl von Schlüsseln in einer Hash Tabelle Java Basics - Anfänger-Themen 2
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
N Tabelle schön in der Konsole ausgeben Java Basics - Anfänger-Themen 5
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
D Tabelle in der Konsole Java Basics - Anfänger-Themen 3
H Meine Tabelle befüllen in .fxml Java Basics - Anfänger-Themen 16
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
O Max Gewinn einer Tabelle Java Basics - Anfänger-Themen 12
D Apache POI Tabelle wechseln Java Basics - Anfänger-Themen 2
B Kann man eine Tabelle in Eclipse erzeugen und damit arbeiten? Java Basics - Anfänger-Themen 8
S Ich verstehe die RegEx Tabelle von Javadoc nicht so ganz Java Basics - Anfänger-Themen 3
krgewb ASCII-Tabelle Java Basics - Anfänger-Themen 12
BlueFox Tabelle in der Konsole ausgeben - Probleme Java Basics - Anfänger-Themen 1
V Operatoren Was will mir die Tabelle in meinem Lehrbuch sagen? (logische Operatoren) Java Basics - Anfänger-Themen 4
J Werte aus einer Tabelle übernehmen Java Basics - Anfänger-Themen 2
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
W Befüllung einer Tabelle mit Checkbox, Trennung GUI und Model Java Basics - Anfänger-Themen 5
P ASCII-Tabelle Java Basics - Anfänger-Themen 5
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
A Hash Tabelle Element suchen Java Basics - Anfänger-Themen 1
B Vererbung In offener Hash Tabelle einfügen Java Basics - Anfänger-Themen 4
M 1x1 Tabelle Abstände korrigieren Java Basics - Anfänger-Themen 2
P Wert aus Tabelle erhalten Java Basics - Anfänger-Themen 1
U Tabelle ändern und die Inhalte speichern Java Basics - Anfänger-Themen 9
I HTML Tabelle nur so lange erzeugen bis Höhe erreicht Java Basics - Anfänger-Themen 9
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
S Klassen Objekt- Tabelle / Dynamisches 2Dimensionales Array für Objekte Java Basics - Anfänger-Themen 6
H "Tabelle" Java Basics - Anfänger-Themen 4
B Tabelle mit Fremdschlüssel versehen Java Basics - Anfänger-Themen 0
M Primefaces tabelle bearbeiten Java Basics - Anfänger-Themen 4
M Tabelle aktualisieren (mal wieder) Java Basics - Anfänger-Themen 10
M Erste Schritte Tabelle aktualisieren (mal wieder) Java Basics - Anfänger-Themen 7
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
P Excel-Tabelle erstellen Java Basics - Anfänger-Themen 4
I Daten aus Arraylists in eine Tabelle übertragen Java Basics - Anfänger-Themen 2
B daten speichern in einer tabelle Java Basics - Anfänger-Themen 5
J Zuweisung/Tabelle Java Basics - Anfänger-Themen 6
M Werte aus Tabelle elegant zuordnen? Java Basics - Anfänger-Themen 2
D String aus txt in label für Tabelle einfügen Java Basics - Anfänger-Themen 8
S Abfragen wenn das ende einer Tabelle erreicht ist Java Basics - Anfänger-Themen 8
M Tabelle aktualisiert sich erst nach mausklick Java Basics - Anfänger-Themen 4
J Tabelle aus Website einlesen [nicht im Quellcode] Java Basics - Anfänger-Themen 6
J Tabelle aktuallisieren Java Basics - Anfänger-Themen 22
A Im Telefonbuch eine Tabelle ergänzen Java Basics - Anfänger-Themen 6
N Ergebnisse dynamisch in Tabelle schreiben Java Basics - Anfänger-Themen 3
F Werte aus Tabelle vergleichen/rechnen Java Basics - Anfänger-Themen 5
J Punkte hinzufügen Tabelle Java Basics - Anfänger-Themen 5
M nur 1 wert in tabelle Java Basics - Anfänger-Themen 3
M Kreuztabellenabfrage an Tabelle anfügen Java Basics - Anfänger-Themen 3
M Wert aus Tabelle lesen Java Basics - Anfänger-Themen 4
M Überschrift wird nicht angezeigt Tabelle Java Basics - Anfänger-Themen 2
O Tabelle Formatieren mit system.out.format Java Basics - Anfänger-Themen 11
M Tabelle mit Buttons Java Basics - Anfänger-Themen 24
M JSON Datensätze aus Website in Tabelle Java Basics - Anfänger-Themen 17
U Drag&Drop von Tabelle in Textfeld Java Basics - Anfänger-Themen 3
D Auf Objekt in Tabelle zugreifen Java Basics - Anfänger-Themen 4
D Eclipse und Visual Editor - erzeugen einer Tabelle Java Basics - Anfänger-Themen 8
Binary.Coder JTable bzw. Tabelle in bestimmte Form überführen Java Basics - Anfänger-Themen 5
D Inhalt der Spalten einer Tabelle addieren Java Basics - Anfänger-Themen 4
H JTable Überschrift der Tabelle wird nicht angezeigt Java Basics - Anfänger-Themen 5
F Aus Tabelle auslesen Java Basics - Anfänger-Themen 10
B Tabelle, Größe der Komponenten Java Basics - Anfänger-Themen 2
H ButtonGroup in Tabelle Java Basics - Anfänger-Themen 2
X Zeile in Tabelle kopieren und in andere einfügen Java Basics - Anfänger-Themen 6
X Arraylist in Tabelle Java Basics - Anfänger-Themen 18
M Tabelle mit immer sortiertem Inhalt Java Basics - Anfänger-Themen 5
R ASCII-Tabelle Java Basics - Anfänger-Themen 6
F Tabelle in anderer Klasse füllen Java Basics - Anfänger-Themen 9
Beckenbauer OOP Durch Komma getrennte Einträge in einem String in ein Array oder eine Tabelle schreiben Java Basics - Anfänger-Themen 4
M 2D-Array als Tabelle ausgeben ? Java Basics - Anfänger-Themen 6
M Konsole: Tabelle Ausgeben Java Basics - Anfänger-Themen 5
M Sortierte Tabelle in Datei schreiben Java Basics - Anfänger-Themen 5
A Leere Fläche einer Tabelle umfärben Java Basics - Anfänger-Themen 3
J Tabelle in Fenster anzeigen Java Basics - Anfänger-Themen 12
Z Array mit daten einer datenbankbefüllen und dies an eine tabelle geben Java Basics - Anfänger-Themen 6
M Einfügen von Daten in eine Tabelle Java Basics - Anfänger-Themen 9
J Java Ein mal Eins Tabelle Java Basics - Anfänger-Themen 11
G POI: Zelle aus einer Tabelle kopieren und in einr anderen einfügen Java Basics - Anfänger-Themen 5
J Feld in Tabelle suchen Java Basics - Anfänger-Themen 8
babel Datenbank Daten direkt an die Tabelle übergeben ohne Arrays Java Basics - Anfänger-Themen 9
T Programm startet nicht wg. Tabelle? Java Basics - Anfänger-Themen 19
R Moechte Tabelle ausschreiben auf der Konsole Java Basics - Anfänger-Themen 2
S Daten aus Tabelle auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen und in Tabelle einfügen Java Basics - Anfänger-Themen 6
E Boolean wert innerhalb einer Tabelle ändern Java Basics - Anfänger-Themen 4
B zahlen verschieben tabelle Java Basics - Anfänger-Themen 2
P Zeilnumbruch vermeiden bei einer Tabelle *hilfe* Java Basics - Anfänger-Themen 11
M Daten in Tabelle setzen. Java Basics - Anfänger-Themen 6
C Tabelle sortieren (evtl. setComparator) Java Basics - Anfänger-Themen 2
T ASCII Tabelle darstellen Java Basics - Anfänger-Themen 7
G Tabelle änderungen Java Basics - Anfänger-Themen 48
S Dynamische Tabelle Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben