java_anfaenger Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 Guten Tag leute... kleines Problem vorerst meine Code Abschnitte meine .txt Datei sieht so aus.. Mathematik I 800001 2,0 800002 2,3 800003 2,0 800004 1,7 800005 1,0 private static void notenEinlesen() { try { File einOrdner = new File(ordnerEin); //alle Dateien einsehen und die Dateie Studierende.txt weglassen File[] listdateien = einOrdner.listFiles(); for (File datei : listdateien) { if (!datei.getName().equals(ordnerEin)) { //zum einlesen der Dateien FileInputStream tmp = new FileInputStream(datei); InputStreamReader utf = new InputStreamReader(tmp, StandardCharsets.UTF_8); BufferedReader temp = new BufferedReader(utf); String line = ""; // Die erste Zeile der .txt Datei benennen damit Programm weiß String fach = temp.readLine(); // While solange die Noten und Matrikelnummern durchgelesen werden while ((line = temp.readLine()) != null){ String[] tokens = line.split("\\t"); //aus der txt die Matrikelnummer entnehmen int matrikelnummer = Integer.parseInt(tokens[0]); //aus der txt die Note entnehmen String note = tokens[1]; //Note der Studenten eintragen studentobjekt.get(matrikelnummer).noteEintragen(fach, note); } temp.close(); utf.close(); tmp.close(); } } } catch (IOException e) { System.out.println("Fehler"); e.printStackTrace(); } } Wie in den Kommentaren beschrieben will ich die Datei Studierende auslassen, doch das Programm greift auf die Studierende Datei zu .. file = studierende.txt ordnerEin = (wo sich studierende.txt befindet) aber auch andere .txt dateien Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JimTheLion Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 (bearbeitet) Moin, durch die beiden Variablen einOrdner und ordnerEin ist's ziemlich einfach durcheinander zu kommen. Vergib da besser mal andere Namen, bei denen man deutlich sieht um was es jeweils geht. Die Variable file sehe ich nirgendwo. Gehört die hier hin? if (!datei.getName().equals(ordnerEin)) { temp und tmp sind auch schlechte Namen. Benenn die einfach als das was sie sind: inputStream und bufferedReader. utf als inputStreamReader oder zumindest als utfReader. Wobei man bei utfReader wahrscheinlich immer noch stutzig wird - es gibt aber wenigstens einen Hinweis, dass es sich um einen Reader handelt. Bearbeitet 14. Januar 2021 von PVoss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 So wie ich es verstehe (ohne dass man ja alle Variablen verstehen kann) liest die for Schleife doch über alle Dateien im Ordner, außer einer. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 5 Minuten schrieb PVoss: Moin, durch die beiden Variablen einOrdner und ordnerEin ist's ziemlich einfach durcheinander zu kommen. Vergib da besser mal andere Namen, bei denen man deutlich sieht um was es jeweils geht. Die Variable file sehe ich nirgendwo. Gehört die hier hin? if (!datei.getName().equals(ordnerEin)) { temp und tmp sind auch schlechte Namen. Benenn die einfach als das was sie sind: inputStream und bufferedReader. utf als inputStreamReader oder zumindest als utfReader. Wobei man bei utfReader wahrscheinlich immer noch stutzig wird - es gibt aber wenigstens einen Hinweis, dass es sich um einen Reader handelt. private static String file = "./ein/Studierende.txt"; die ist in der Main ganz oben Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 1 Minute schrieb MartinSt: So wie ich es verstehe (ohne dass man ja alle Variablen verstehen kann) liest die for Schleife doch über alle Dateien im Ordner, außer einer. genau.. aber das Problem ist, dass sie dennoch die Datei liest welche sie nicht lesen soll Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JimTheLion Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 (bearbeitet) vor 4 Minuten schrieb java_anfaenger: private static String file = "./ein/Studierende.txt"; die ist in der Main ganz oben Jo, aber du nutzt sie ja nirgendwo im Code den du gezeigt hast. Oder ich hab die Stelle übersehen. Bearbeitet 14. Januar 2021 von PVoss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 1 Minute schrieb PVoss: Jo, aber du nutzt sie ja nirgendwo im Code den du gezeigt hast. Oder ich hab die Stelle übersehen. public class MainProgramm { private static String file = "./ein/Studierende.txt"; private static String ordnerEin = "./ein"; private static String ordnerAus = "./aus"; private static HashMap<Integer,Student> studentobjekt = null; So sieht der Anfang aus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JimTheLion Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 Ja. Du musst die Dateinamen aber trotzdem mit der Variable file vergleichen. Du vergleichst aber mit ordnerEin. Guck nochmal nach, ob du die Variable file irgendwo in deinem Code nutzt, außer bei der Initialisierung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 (bearbeitet) vor 2 Minuten schrieb PVoss: Ja. Du musst die Dateinamen aber trotzdem mit der Variable file vergleichen. Du vergleichst aber mit ordnerEin. Guck nochmal nach, ob du die Variable file irgendwo in deinem Code nutzt, außer bei der Initialisierung. habe ich auch gemerkt geändert, aber dennoch tut sich nichts ^^ private static void notenEinlesen() { try { File einOrdner = new File(ordnerEin); //alle Dateien einsehen und die Dateie Studierende weglassen File[] listdateien = einOrdner.listFiles(); for (File datei : listdateien) { if (!datei.getName().equals(file)) { //Aus Youtube Vorlesung zum einlesen der Dateien FileInputStream fileinpstr = new FileInputStream(datei); InputStreamReader inpstrre = new InputStreamReader(fileinpstr, StandardCharsets.UTF_8); BufferedReader bufr = new BufferedReader(inpstrre); String line = ""; // Die erste Zeile der .txt Datei benennen damit Programm weiß String fach = bufr.readLine(); // While solange die Noten und Matrikelnummern durchgelesen werden while ((line = bufr.readLine()) != null){ String[] tokens = line.split("\\t"); //aus der txt die Matrikelnummer entnehmen int matrikelnummer = Integer.parseInt(tokens[0]); //aus der txt die Note entnehmen String note = tokens[1]; //Note der Studenten eintragen studentobjekt.get(matrikelnummer).noteEintragen(fach, note); } fileinpstr.close(); inpstrre.close(); bufr.close(); } } } catch (IOException e) { System.out.println("Fehler"); e.printStackTrace(); } } Bearbeitet 14. Januar 2021 von java_anfaenger Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JimTheLion Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 (bearbeitet) Ist aber schonmal ein Schritt in die richtige Richtung. Bist du dir denn sicher, dass der Dateiname aus datei.getName() auch den Ordnernamen "./ein/" enthält? Bearbeitet 14. Januar 2021 von PVoss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 7 Minuten schrieb PVoss: Ist aber schonmal ein Schritt in die richtige Richtung. Bist du dir denn sicher, dass der Dateiname aus datei.getName() auch den Ordner "ein/" enthält? Verstehe ich nicht ganz. getName() returned nur name welches ein String ist Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rienne Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 Es geht darum, dass dein String file ein Dateiname inklusive einem vorangestellten Ordnerpfad ist. Wenn du dir aber den Namen der Datei ausgeben lässt, wird dort höchstwahrscheinlich kein Ordnerpfad mit angegeben sein. D.h. deine equals-Abfrage wird nicht greifen. Wie schon viele vor mir auch in den anderen Threads von dir geschrieben haben: Nutze doch erst einmal deinen Debugger und schau dir an, welche Werte du wann in welcher Variable (oder auch Konstanten) hast und was du an der Stelle eigentlich erwarten würdest. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 4 Minuten schrieb Rienne: Es geht darum, dass dein String file ein Dateiname inklusive einem vorangestellten Ordnerpfad ist. Wenn du dir aber den Namen der Datei ausgeben lässt, wird dort höchstwahrscheinlich kein Ordnerpfad mit angegeben sein. D.h. deine equals-Abfrage wird nicht greifen. Wie schon viele vor mir auch in den anderen Threads von dir geschrieben haben: Nutze doch erst einmal deinen Debugger und schau dir an, welche Werte du wann in welcher Variable (oder auch Konstanten) hast und was du an der Stelle eigentlich erwarten würdest. Der debugger funktioniert bei mir nicht so wie gewollt.. leider Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rienne Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 Was für eine IDE benutzt du denn? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 4 Minuten schrieb Rienne: Was für eine IDE benutzt du denn? Eclipse. Normalerweise öffnet sich ein Fenster wo man halt die Schritte sieht bei mir ist das nicht der Fall Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rienne Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 Hast du deinen Code denn auch als "Debug as..." ausgeführt? Wenn sich das nicht automatisch öffnet, solltest du auch die Möglichkeit haben oben rechts in die Debug-Sicht zu wechseln. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 (bearbeitet) vor 12 Minuten schrieb Rienne: Hast du deinen Code denn auch als "Debug as..." ausgeführt? Wenn sich das nicht automatisch öffnet, solltest du auch die Möglichkeit haben oben rechts in die Debug-Sicht zu wechseln. Exception in thread "main" java.lang.NumberFormatException: For input string: "Bob Berg,800002,Medieninformatik" Das ist die Fehlerausgabe meiner Konsole und die Information mit "Bo.." die liegt in der Studierende.txt Bearbeitet 14. Januar 2021 von java_anfaenger Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 15 Minuten schrieb Rienne: Hast du deinen Code denn auch als "Debug as..." ausgeführt? Wenn sich das nicht automatisch öffnet, solltest du auch die Möglichkeit haben oben rechts in die Debug-Sicht zu wechseln. Hab es ausgeführt und auch nachgeschaut, doch bei mir werden keine Variablen angezeigt, also das Fenster bleibt blank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rienne Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 Du musst die Variablen schon selber ins Fenster schreiben um deren Inhalt zu sehen, soweit ich mich erinnere. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 14. Januar 2021 Autor Teilen Geschrieben 14. Januar 2021 vor 45 Minuten schrieb Rienne: Du musst die Variablen schon selber ins Fenster schreiben um deren Inhalt zu sehen, soweit ich mich erinnere. Soweit ich es aus dem Morpheus Tutorial herausnehmen kann erstellt es selber die Variablen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rienne Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 Das kann aber auch an den Einstellungen des Users in dem Tutorial liegen. Ich meine mich zu erinnern, die Variablen selbst eingegeben zu haben, die ich überwachen möchte, als ich das letzte Mal mit Eclipse debugged habe. Ist aber auch schon eine Weile her. Ggf. solltest du dir da noch mal ein anderes Tutorial anschauen. Debuggen ist mit die wichtigste Fähigkeit, die man als Entwickler beherrschen sollte. 😊 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 14. Januar 2021 Teilen Geschrieben 14. Januar 2021 vor einer Stunde schrieb Rienne: Ich meine mich zu erinnern, die Variablen selbst eingegeben zu haben Du hast im Eclipse beides: ein Fenster mit den deklarierten Variablen und deren aktueller Wert und ein zweites Panel, wo man Ausdrücke tippen und auswerten kann, bspw um mal mit den aktuellen Werten mal fix zu rechnen oder Methoden aufzurufen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.