Datensatz auf ein bestimmten Parameter einzugrenzen

  • Themenstarter Themenstarter Gelöschtes Mitglied 67299
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 67299

Gast
Hallo, ich bin gerade dabei ein Programm zu schreiben welches eine cvs Datei einlesen soll und anschließend soll der Nutzer aus der zweiten Spalte Werte auswählen können. Ich habe bereits die Datei eingelesen aber ich finde einfach nirgends eine Lösung wie der Nutzer anschließend diese Werte erhalten kann. Hat jemand einen Tipp für mich?
"Ihre Anwendung soll die Datei einlesen und es dem Nutzer ermöglichen, den Datensatz auf ein bestimmtes Bundesland einzugrenzen."ist die konkrete Aufgabenstellung. In diesem Fall befindet sich Der Datensatz "Bundesland" in der zweiten Spalte der cvs Datei
Vielen Dank im Voraus!
 
Was bedeutet "auswählen"? Was bedeutet "erhalten"?

Hat dein Programm eine GUI? Dann wären vielleicht eine Liste, Table oder Combobox geeignet zur Darstellung und zur Auswahl von Werten.

EDIT:

Oder du öffnest die CSV einfach mit Excel...
 
Was bedeutet "auswählen"? Was bedeutet "erhalten"?

Hat dein Programm eine GUI? Dann wäre vielleicht eine Liste oder Combobox geeignet zur Darstellung und zur Auswahl von Werten.
Ich bin noch ziemlich am Anfang also es ist ein sehr simples Programm.
"Ihre Anwendung soll die Datei einlesen und es dem Nutzer ermöglichen, den Datensatz auf ein bestimmtes Bundesland einzugrenzen."ist die konkrete Aufgabenstellung. In diesem Fall befindet sich der Datensatz "Bundesland" in der zweiten Spalte der cvs Datei.
Ich muss Datei leider mit einem TextEditor öffnen
 
Die Frage ist dann erst einmal, wie du die Daten, die Du eingelesen hast, nun im Speicher vorhältst.

Wenn es um ein Java Programm geht, dann ist
Ich muss Datei leider mit einem TextEditor öffnen
auch nicht wirklich zielführend. Damit bereitest Du die Eingabedatei ja lediglich vor.

Das
Ich habe bereits die Datei eingelesen
wird ja hoffentlich nicht bedeuten, dass Du die Datei in einem Text Editor eingelesen hast sondern dass Du diesen Schritt in Deinem (Java) Programm bereits erfolgreich erledigt hast.

Und bezüglich vorgehen ist es doch einfach: Wie gehst Du vor, wenn Du einen Stapel Blätter hast und du willst nur einen Stapel mit Blättern, die ein bestimmtes Kriterium erfüllen. Wie gehst Du genau vor?
 
Java:
Scanner fileScan = new Scanner(new File("src/RKI.csv"));
        String zeile;

        while (fileScan.hasNext()) {
            zeile = fileScan.nextLine();
            System.out.println(zeile);
            
        }

Ich habe sie in meinem Java Programm eingefügt.
Die Frage ist dann erst einmal, wie du die Daten, die Du eingelesen hast, nun im Speicher vorhältst.

Wenn es um ein Java Programm geht, dann ist

auch nicht wirklich zielführend. Damit bereitest Du die Eingabedatei ja lediglich vor.

Das

wird ja hoffentlich nicht bedeuten, dass Du die Datei in einem Text Editor eingelesen hast sondern dass Du diesen Schritt in Deinem (Java) Programm bereits erfolgreich erledigt hast.

Und bezüglich vorgehen ist es doch einfach: Wie gehst Du vor, wenn Du einen Stapel Blätter hast und du willst nur einen Stapel mit Blättern, die ein bestimmtes Kriterium erfüllen. Wie gehst Du genau vor?
Ich muss meine Stapel nach einem bestimmten Kriterium trennen?
 
Dir ist schon klar, dass du nur eine Variable "zeile" hast, in der sich genau ein String speichern lässt?

Du überschreibst also diese Variable immer wieder mit neuen Werten (die weiteren Zeilen).

Die Aufgabe ist leider nicht sehr klar. Soll der Benutzer das Bundesland für die Eingrenzung vorher angeben? Oder sollen erst alle Bundesländer eingelesen werden und dem Benutzer eine Auswahl gegeben werden?

Vermultlich wirst du die eingelesenen Werte in einer entsprechenden Datenstruktur speichern müssen. Kennst du Array oder List<>?

Um eine eingelesene Zeile in ihre Spalten aufzuteilen bietet sich String.split() an: https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
 
Also neben der Tatsache, dass Du nur eine einzige Zeile hast, die Du ständig überschreibst:
Jede Zeile besteht ja aus einer Reihe von Werten, die durch Komma (oder ; bei Excel mit Deutscher Regionalisierung) getrennt sind.

Daher gehört zum Einlesen erst einmal, dass Du auch alle Zeilen speichern kannst und jede Zeile dann aus den x Werten besteht.

Wie Du das am Besten machen kannst, hängt davon ab, was ihr so schon genutzt habt. Evtl. habt Ihr abstrakte Datentypen wie List und so schon verwendet. Oder ihr dürft/sollt die Collections von Java verwenden. Im Worst Case habt ihr nur Arrays, was aber auch geht. (Zur Not wird die Datei mehrfach gelesen - ein erstes Mal um die Anzahl der Datensätze zu ermitteln und das zweite Mal um dann die Daten zu lesen.)
 
Mal eine kurze Skizze für den Fall, dass das Bundesland vorher bekannt ist. Dann muss nämlich nichts gespeichert werden und du musst nur dein bisheriges Programm etwas erweitern.

  1. Eine Zeile der Datei einlesen.
  2. Die Zeile splitten, um an das Bundesland zu kommen.
  3. Wenn das Bundesland dem gesuchten Bundesland entspricht, die Zeile ausgeben.
  4. Wenn es eine nächste Zeile gibt, weiter mit 1.
 
Also das ist die gesamte Aufgabenstellung,
Schreiben Sie eine Anwendung, die mit Hilfe von exponentieller Glättung die Corona-Zahlen für die nächsten Wochen vorhersagen kann. Benutzen Sie dafür die Datei, die die summierten Corona-Fälle pro Bundesland und Kalenderwoche darstellt.
Ihre Anwendung soll die Datei einlesen und es dem Nutzer ermöglichen, den Datensatz auf ein bestimmtes Bundesland einzugrenzen. Zusätzlich wird der Nutzer nach dem Wert des Parameters alpha gefragt. Dann werden die Werte eines exponentiellen Glättungsprozesses für die Corona-Fälle berechnet und mit den echten Werten verglichen, um den Fehler zu berechnen. Der Fehler ist dann die Summe der absoluten Abweichungen (Betrag) zwischen den echten und den berechneten Werten. Der Nutzer bekommt bei jeder Kombination von Bundesland und alpha den Fehler angezeigt sowie die kleinste und höchste absolute Abweichung zwischen den zwei Werten. Basiert darauf kann er den besten Wert von alpha wählen. Optional ist die Anwendung in der Lage den Wert für nächste Woche für einen Wert von alpha und ein Bundesland vorherzusagen.

Ich kann leider selber noch nicht sehr viel dazu sagen, weil ich noch ziemlich am Anfang in Java stehe und ich die Aufgabenstellung erstmal durcharbeite. Aber eure Tipps haben mir schon mal etwas weiter geholfen das ganze zu verstehen danke!
 
Das kann man langsam Schritt für Schritt angehen. Und der erste Schritt sollte sein, die Daten erst einmal so einzulesen, dass diese für die weitere Bearbeitung bereit stehen. Und davon hast Du bisher noch nicht wirklich etwas erreicht.

Und bei so einer Aufgabe gehe ich davon aus, dass du auch schon einige Grundlagen gehabt haben müsst, denn die Aufgabe setzt ja einiges voraus. Ihr werdet also bestimmt schon mit String gearbeitet und diverse Datentypen näher kennen gelernt haben.
 
dass du auch schon einige Grundlagen gehabt haben müsst, denn die Aufgabe setzt ja einiges voraus.
Sehe ich auch so. Meinen Beitrag #8 kannst du dafür vergessen 😉
Und der erste Schritt sollte sein, die Daten erst einmal so einzulesen, dass diese für die weitere Bearbeitung bereit stehen.
Ich würde dafür eine separate Klasse vorsehen.

Aber echt schwierig, da richtig zu helfen, weil wir deinen Kenntnisstand, bzw. das Ziel der Aufgabe (also das Thema, was vertieft werden soll, wie Klassen, Listen, OOP, Entwurfsmuster oder alles zusammen) nicht kennen.
 

Zurück
Oben