Daten aus einer Datei in eine Liste speichern

Humboldt

Mitglied
Vorne weg… Ich bin Anfänger.



Was ich tun möchte:



1. Eine Excel-Datei in eine CSV-Datei umwandeln.

2. Eine CSV-Datei einlesen.

3. Diese Daten in einer Array-Liste speichern.

4. Doppelte Einträge (Namen, bzw. Zeilen (Bsp.: Meier 4 Äpfel + Meier 5 Äpfel = Meier 9 Äpfel)) zusammenfassen.

5. Die restlichen Daten in einer weiteren Array-Liste speichern.

6. Die Daten der zweiten Array-Liste in eine CSV-Datei speichern.


Jedoch komme ich gerade nicht weiter. Das Speichern in die beiden Array-Listen klappt nicht. Hat jemand einen Rat?


Bisheriger Code:



Java:
public static void main(String[] args) {



Scanner dateiLesen = null;



try {

dateiLesen = new Scanner(new File("Pfad/…/Liste.csv"));

} catch (FileNotFoundException e) {

e.printStackTrace();

}

while (dateiLesen.hasNextLine()) {

System.out.println(dateiLesen);

String[] values = dateiLesen.split(",");

System.out.println(dateiLesen.nextLine());

}

ArrayList<String> arrayList1 = new ArrayList<String>();

arrayList1.equals("name");



ArrayList<String> arrayList2 = new ArrayList<String>();

arrayList2.toArray();



for (int x = 0; x < arrayList1.size(); x++) {

for (int y = 0; y < arrayList2.size(); y++) {

if (arrayList1.get(x).equalsIgnoreCase(arrayList2.get(y))) {

System.out.println("Inhalt " + arrayList1.get(x));

}

}

}

Set<dateiLesen> doppelteAussortieren = new HashSet<>();

int shift = 0;

for (int i = 0; i > values.length; i++) {

if (doppelteAussortieren.contains(values)) {

shift++;

} else { // distinct

doppelteAussortieren.add(values);

values[i - shift] = values;

}

}

for (int i = doppelteAussortieren.size(); i < values.length; i++) {

values = null;

}

dateiLesen.close();

}

}
 
Zuletzt bearbeitet:

krgewb

Top Contributor
Jetzt fehlt aber trotzdem etwas. Oder heißt das in der for-Schleife wirklich
Java:
values = null;
?
 
K

kneitzel

Gast
Irgendwie ist der Code eh sehr dubios ... Wenn man davon absieht, dass die variablennamen nichts aussagen:

dateiLesen ist ein Scanner. Was soll da dann ein:
System.out.println(dateiLesen);
dateiLesen.split(",");

Da wird nichts eingelesen und selbst wenn: Mit der lokalen Variable passiert nichts mehr...

Auch die anderen Zeilen bringen mehr Fragezeichen auf:
arrayList1.equals("name");
arrayList2.toArray();

Daher sehe ich bei dem Code nicht einmal einen Ansatz, wo ich helfen könnte.

System.out.println(dateiLesen); => Ja, was wird Dir da denn ausgegeben? Kommt da was sinnvolles raus? Naja - wie denn, wenn es nicht einmal übersetzbar ist, denn Scanner hat keine Methode split, daher wird sich Code mit dateiLesen.split(","); nicht übersetzen lassen.
Die beiden herausgepickten arraylist Aufrufe sind unsinn, denn eine Array List wird nie ein String sein und eine leere arraylist in ein Array wandeln - ok vielleicht will man ein Array haben, aber dann sollte man dieses Array, das zurück gegeben wird, auch verwenden ...

Daher wäre meine Bitte:
Fang wirklich mal bei 0 an. Beschreibe erst einmal genau, was Du machen willst und dann fang langsam an:
Eine Datei Zeile für Zeile auslesen wäre ein Anfang. Da hast Du ja schon gewisse Ansätze mit dem Scanner und der Schleife und der Ausgabe ...
Reduziere den Code erst einmal komplett darauf:
Eine Datei Zeile für Zeile einlesen und die Zeile ausgeben.

Das kannst Du dann erweitern:
- Die eingelesene Zeile kommt in eine Variable, die Du dann ausgibst.
- Die Variable verarbeitest Du (evtl. hat die Variable ja einen Typ, der eine split Methode kennt?)
- Das Ergebnis speicherst Du dann in einer Variablen und gibt es als Test erst einmal aus...
u.s.w.
 

Humboldt

Mitglied
Ja, dies alles sieht ein wenig chaotisch aus. Ein Neuanfang war auch mein Gedanke.

So habe ich die Datei eingelesen und die Daten Zeile für Zeile ausgegeben.

Java:
public static void main(String[] args) {

        Scanner scan = null;

        try {
            scan = new Scanner(new File("Pfad/.../Liste.csv"));
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        while (scan.hasNext()) {
            System.out.println(scan.nextLine());
        }
            scan.close();
    }
}
 
K

kneitzel

Gast
Sehr schön, das war der erste Schritt. Dann kommen wir zum nächsten:
- Die eingelesene Zeile kommt in eine Variable, die Du dann ausgibst.

Wenn Du das hingekriegt hast, einfach den nächsten Punkt aus #5 nehmen ... aber wirklich eins nach dem Anderen - nicht mehrere auf einmal versuchen!
 

Humboldt

Mitglied
So etwa? Aber in einer Zeile sind mehrere Begriffe und Zahlen. String als Typ zu nehmen, wäre hier doch dann falsch oder?

Java:
   public static void main(String[] args) {

        Scanner scan = null;

        try {
            scan = new Scanner(new File("Pfad/.../Liste.csv"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        while (scan.hasNext()) {
            System.out.println(scan.nextLine());
        }
        String zeilenInhalt = scan.nextLine();
        System.out.println(zeilenInhalt);
        
        scan.close();
    }
}
 
K

kneitzel

Gast
Also generell ist ja die Frage: Was liefert nextLine zurück? Und das ist tatsächlich ein String, wie man an der Dokumentation auch sehen kann:

Dabei ist erst einmal egal, was da in dem String drin steht. Das da mehrere Werte drin stehen ist ja nur eine Interpretation. Die ist dem Programm aber an dieser Stelle egal.

Somit ist das vollkommen richtig soweit.

Nun ist die Frage: Wie kommst Du an die Werte heran - und da hattest Du ja schon prinzipiell die richtige Idee - nur eben wurde die falsch aufgerufen... Du hast einen String mit einer entsprechenden Zeichenkette und könntest nun z.B, die split Methode von String verwenden:
 

Humboldt

Mitglied
Java:
public static void main(String[] args) {

        Scanner scan = null;

        try {
            scan = new Scanner(new File("Pfad/.../Liste.csv"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        while (scan.hasNext()) {
            System.out.println(scan.nextLine());
        }
        String zeilenInhalt = scan.nextLine();
        System.out.println(zeilenInhalt);
        
        String[] werteAufteilen = zeilenInhalt.split(",");
        
        scan.close();
    }
}
 
K

kneitzel

Gast
Ach ja - wenn man nicht gut genug schaut...

Du hattest bisher eine Zeile in der Schleife:
Java:
System.out.println(scan.nextLine());

Das hat eine Zeile eingelesen und sofort ausgegeben. Das ist Code, den Du doch ersetzen wolltest, indem Du die Zeile einliest in eine Variable und dann diese Variable ausgibst.

Das geht prinzipiell mit
Java:
        String zeilenInhalt = scan.nextLine();
        System.out.println(zeilenInhalt);
aber der Code sollte natürlich - wie schon geschrieben - den anderen Code ersetzen.

Denn die Schleife besagt ja: So lange es noch weitere Elemente in der Datei gibt (hasNext() Aufruf) willst Du die Inhalte lesen.

Edit: Und die werte aufteilen gehört dann natürlich ebenso in die Schleife ...
 

Humboldt

Mitglied
So meinst Du?

Java:
  public static void main(String[] args) {

        Scanner scan = null;

        try {
            scan = new Scanner(new File("Pfad/.../Liste.csv"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        while (scan.hasNext()) {
            String zeilenInhalt = scan.nextLine();
            System.out.println(zeilenInhalt);
            String[] werteAufteilen = zeilenInhalt.split(",");
        }
        scan.close();
    }
}
 
K

kneitzel

Gast
Einfach noch ein kleiner Hinweis auf try-with-resources:
Java:
  public static void main(String[] args) {
        try (Scanner scan = new Scanner(new File("Pfad/.../Liste.csv"))) {
            while (scan.hasNext()) {
                String zeilenInhalt = scan.nextLine();
                System.out.println(zeilenInhalt);
                String[] werteAufteilen = zeilenInhalt.split(",");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}


Das ist der übliche Weg, wenn man mit lokalen Variablen umgeht, die AutoClosable implementieren (wie Scanner).
 

Humboldt

Mitglied
Dies in eine Arrayliste zu speichern scheint nicht so leicht zu sein. Oder habe ich wieder zu viele Schritte auf einmal gemacht?

Java:
public static void main(String[] args) {

        Scanner scan = null;

        try {
            scan = new Scanner(new File("Pfad/.../Liste.csv"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        while (scan.hasNext()) {
            String zeilenInhalt = scan.nextLine();
            System.out.println(zeilenInhalt);
            String[] werteAufteilen = zeilenInhalt.split(",");
            ArrayList<String> arrayList1 = new ArrayList<String>();
            arrayList1.equals("name");
            String a[] = {};
            for (int i = 0; i < a.length; i++) {
                if (!arrayList1.contains(a[i])) {
                    arrayList1.add(a[i]);
                }
            }
            System.out.println(arrayList1);
            System.out.println(a);
        }

        scan.close();
    }
}
 
K

kneitzel

Gast
Als erstes erzeugst Du in der Schleife die ArrayList. Willst Du bei jeder Zeile eine neue ArrayList erzeugen?

Und was willst Du mit arrayList1.equals("name"); erreichen?
Und der Code danach: Du erzeugst ein leeres Array um da dann für alle Elemente etwas zu machen. Aber es gibt ja keinerlei Elemente. Daher wird der Block der for Schleife nie ausgeführt...
 

Humboldt

Mitglied
Nein, ich möchte nur eine ArrayListe und nach der Zusammenfassung der Namen, eine zweite ArrayListe.

Mit dem Vergleich der Namen möchte ich, dass doppelte Namen, nebst deren Anhang erkannt, bzw. zusammengefasst werden.
(Namen, bzw. Zeilen (Bsp.: Meier 4 Äpfel + Meier 5 Äpfel = Meier 9 Äpfel))
 
K

kneitzel

Gast
Also wenn Du nur eine ArrayList haben willst, dann wäre die außerhalb der Schleife zu erstellen.

Des Weiteren wäre die Frage, wie Du die Daten überhaupt speichern willst. Das ist bisher wenig durchdacht finde ich und da würde ich auch vom Ansatz her ein Objektorientierten Ansatz wählen. Denn Du hast da ja eine Information, die mehr ist als nur ein String. Du hast ja etwas aus Name der Person, Stückzahl und Gegenstandsart oder so ...
 

Humboldt

Mitglied
Die zusammengefassten Daten möchte ich wieder in eine CSV-Datei speichern. Ich hatte auch mal eine separate Klasse für Name, Stückzahl und Obst gewählt gehabt. Bin hier allerdings nicht weitergekommen.

Die Grundidee ist, eine Liste in einer Datei, welche Mehrfacheinträge aufweist, zusammen zu fassen und sie dann in eine neue CSV-Datei zu speichern.

Aber vielleicht sollte ich, wie Du sagst, alles überdenken.
 
K

kneitzel

Gast
Der Ansatz mit so einer Klasse war schon richtig ...

um was handelt es sich dabei eigentlich? Bringst Du Dir selbst die Programmierung bei und hast Dir die Problematik selbst überlegt oder ist das eine Art Hausaufgabe?

wenn ich später etwas Zeit finde, werde ich dazu vielleicht mal was zusammen fassen ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1
A Programm mit Daten einer Datei testen Java Basics - Anfänger-Themen 4
T Speicherprobleme von daten in einer datei Java Basics - Anfänger-Themen 5
S Daten aus einer JTable in eine .doc-word- datei exportieren? Java Basics - Anfänger-Themen 7
T Daten in einer Datei überschreiben Java Basics - Anfänger-Themen 13
T Daten aus einer .csv Datei in einen Vector einlesen Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
B daten speichern in einer tabelle Java Basics - Anfänger-Themen 5
MiMa Mehrere Daten in einer Variable? Java Basics - Anfänger-Themen 25
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
R Alle Daten einer HashMap ausgeben Java Basics - Anfänger-Themen 17
C Daten einer JTable lassen sich nicht ändern Java Basics - Anfänger-Themen 6
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
S Frage zum speichern der Daten in einer LinkedList Java Basics - Anfänger-Themen 2
Dit_ Daten vom Server in einer Schleife Java Basics - Anfänger-Themen 4
Z Array mit daten einer datenbankbefüllen und dies an eine tabelle geben Java Basics - Anfänger-Themen 6
K daten von jtable auslesen und in einer anderen klasse anzeigen und bearbeiten Java Basics - Anfänger-Themen 7
R Hilfe! Daten aus einer excelliste auslesen und. Java Basics - Anfänger-Themen 3
G Daten in einer Klasse "speichern" Java Basics - Anfänger-Themen 13
U daten aus einer datenbank aus lesen und einfügen Java Basics - Anfänger-Themen 2
J Kann man Daten innerhalb einer Datenstruktur verändern? Java Basics - Anfänger-Themen 4
N Daten von einer Klasse an eine andere übergeben? Java Basics - Anfänger-Themen 4
D ComboBox mit Daten einer Datenenbank Java Basics - Anfänger-Themen 8
P Daten aus Datenbank in einer JComboBox darstellen Java Basics - Anfänger-Themen 4
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben