CSV-Datei verarbeiten

jono

Top Contributor
Hallo,

Habe jetzt eine solche Aufgabe:
1) getFileName gibt den Pfad der CSV-Datei zurück, damit das System sie korrekt einlesen kann. Achten Sie darauf eine relative Pfadangabe zu verwenden und keine absolute.
2) getTemperatureMedianValues erhält den Pfad der CSV-Datei als Eingabe und gibt ein List-Objekt mit den jeweiligen Medianwerten für jede Zeile der Datei zurück. Da die Datei vier Zeilen (Messreihen) enthält, wird die Liste vier Elemente enthalten. Denken Sie daran, dass sie die Datei korrekt einlesen, d.h. zeilenweise einlesen, die Zeile in die jeweiligen Messwerte aufteilen und diese in Gleitkommazahlen umwandeln. Beachten Sie, dass das erste Element einer Zeile jeweils der Name der Stadt darstellt, in der die Werte ”gemessen” wurden. Dieses Element muss für die Berechnung des Medians ignoriert werden. Als Trennzeichen in der CSV-Datei wird das Komma verwendet. Die Medians werden als double, also Gleitkommazahlen mit doppelter Genauigke, angegeben. Um die Liste in-place zu sortieren können Sie die Methode Collections.sort(..) verwenden.

Ich verstehe gerade nicht ganz genau wie ich den Pfad der CSV-Datei zurückgeben soll und was das bringen soll das in einer separaten Methode zu tun. getTemperatureMedianValues erhält ja den Pfad schon als Eingabeparameter in Form eines Strings. Ich hätte dann im weiteren Verlauf der Eingabe-String-Variable den Pfad als String zugewiesen. Bitte um Hilfe. Danke im Voraus
 
Ich nehme an du sollst den Pfad, den dir getFileName() liefert als Parameter für getTemperatureMedianValues() verwenden.
 
Wie gibt man jetzt den relativen Pfad richtig an? Bzw. was muss ich weglassen also das Laufwerk kann man weglassen. Aber was noch?
Das ist der absolute: D:\assignmentXX_algodat\assignment_01\temperature\data
 
Ich nehme an du sollst den Pfad, den dir getFileName() liefert als Parameter für getTemperatureMedianValues() verwenden.
Wie kann ich denn den Pfad als Parameter für getTemperatureMedianValues() verwenden wenn ich nur den relativen Pfad in getFileName() zurückgegeben habe?
Java:
public String getFileName() {

        return "";

    }

    public List<Double> getTemperatureMedianValues(String fileName) {

        return null;

    }
So sieht es erstmal aus
 
Das ist der Kontext, weiß nur nicht, ob das wirklich weiterhilft, samt dem Text hier stellt das die gesamte Aufgabenstellung dar:
Ihre Aufgabe ist es ein Java-Programm zu schreiben, das eine CSV-Datei ausliest und den Median auf den eingelesenen Werten berechnet. Gegeben ist die Datei temperatures.csv im Ordner data. Diese enthält 100 zufällig generierte Temperaturmessungen für vier verschiedene Städte. Eine Zeile besteht aus dem Namen der jeweiligen Stadt, gefolgt von den Messwerten, jeweils durch Kommata getrennt. Desweiteren finden Sie eine Java-Datei mit dem Namen TemperatureReader.java im Ordner src.
 
Indem Du vom Arbeitsverzeichnis aus angibst, wo Du hinwillst. Ist das Arbeitsverzeichnis z. B. C:\Users und möchtest Du den Pfad zu C:\Users\X\Y\test.data angeben, dann wäre der relative Pfad X\Y\test.data. Wechselst Du das Arbeitsverzeichnis nach C:\Users\X, dann wäre der relative Pfad eben Y\test.data. Stehst Du dagegen auf C:\XY, dann wäre der relative Pfad ..\Users\X\Y\test.data.

Wenn Du aus der IDE heraus das Projekt ausführst, ist das Arbeitsverzeichnis üblicherweise der Projektordner.
 
Stehst Du dagegen auf C:\XY, dann wäre der relative Pfad ..\Users\X\Y\test.data
Kannst Du darauf bitte nochmal näher eingehen, verstehe das nicht.
Wenn Du aus der IDE heraus das Projekt ausführst, ist das Arbeitsverzeichnis üblicherweise der Projektordner.
Was müsste ich denn jetzt bei mir angeben? Weiß nicht wie ich das jetzt angehen soll. Wenn der Projektordner das Arbeitsverzeichnis ist, was soll ich dann noch als Pfad angeben...

So sieht der Explorer aus:
1636385262333.png
 
Java:
public static void getTemperatureMedianValues(String fileName) {
        getTemperatureMedianValues(getFileName());
getFileName wird rot unterkringelt, es wird empfohlen diese Methode static zu machen, macht das Sinn?
 
Java:
public static void getTemperatureMedianValues(String fileName) {
        getTemperatureMedianValues(getFileName());
getFileName wird rot unterkringelt, es wird empfohlen diese Methode static zu machen, macht das Sinn?
getFileName() ist eine Methode der Klasse "Path" wo ist dein Objekt der Klasse auf das du die Methode "geFileName()" anwenden willst?

du hast keines deshalb ist es rot unterkringelt.


Eigentlich willst du doch in der Methode getTemperatureMedianValues die Datei die du als Path String übergibst öffnen und lesen.
Was soll der der versuchte Rekursion Aufruf?
 
Zuletzt bearbeitet:
Java:
public class TemperatureReader {

    String getFileName() {
        return "xx";
    }

    public void getTemperatureMedianValues(String fileName) {
        getTemperatureMedianValues(getFileName());
    }  // das ist eine endlosSchleife
  
    public static void main(String[] args) {
        TemperatureReader tm = new TemperatureReader();
        tm.getFileName();
    }
}
 
Zuletzt bearbeitet:
Java:
public static void getTemperatureMedianValues(String fileName) {
        getTemperatureMedianValues(getFileName());
getFileName wird rot unterkringelt, es wird empfohlen diese Methode static zu machen, macht das Sinn?
Die Frage ist erst mal: Was möchtest du mit diesem Code erreichen?

Der Dateiname ist ein Parameter der Methode getTemperatureMedianValues(), d. h. beim Aufruf dieser Methode (z. B. in der main()-Methode) musst du einen Dateinamen angeben. Diesen Dateinamen erhältst du durch den Aufruf der Methode getFileName(), die einen String als Ergebnis zurück liefert.

Das was du da versuchst ist Murks.
 

Zurück
Oben