maestro impostor Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 Führ den Code doch mal aus und schau was passiert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 4 Stunden schrieb Rienne: Viellicht wäre es mal ganz hilfreich, wenn du erst einmal erklärst, in welchem Zusammenhang du diese "Aufgabe" bearbeitest und dann die konkrete Aufgabenstellung postest, statt Code-Schnipsel und das, was du am Ende ausgegeben haben willst mit der Bedingung, dass es eine (Hash-)Map sein soll. Starten Sie ein neues MainProgramm. Holen Sie den ersten Datensatz bezüglich Lieblingsfächer. Gehen Sie die Daten-Zeilen durch und erzeugen Sie dementsprechend Student-Objekte. Speichern Sie die Student-Objekte nicht in einer List, sondern in einer Map: Schlüssel: Matrikelnummer → Wert: Student-Objekt Um die Implementierung zu vereinfachern, speichern Sie das Lieblingsfach als einen String und nicht als Fach-Objekt. Das ist die Aufgabenstellung ... die ich durcharbeiten muss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 List<Student> deserializedStudents = serializedStudents.stream() .map(Student::deserialize) .collect(Collectors.toList()); Die Stelle in der zweiten und dritte Zeile ist fehlerhaft..sagt halt das die Klasse Student diese Funktion deserialize nicht definiert Exception in thread "main" java.lang.Error: Unresolved compilation problems: The method map(Function<? super String,? extends R>) in the type Stream<String> is not applicable for the arguments (Student::deserialize) The type Student does not define deserialize(String) that is applicable here Collectors cannot be resolved Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 (bearbeitet) vor 36 Minuten schrieb java_anfaenger: Die Stelle in der zweiten und dritte Zeile ist fehlerhaft..sagt halt das die Klasse Student diese Funktion deserialize nicht definiert Ich würde dir echt gerne Helfen und das Problem lösen, allerdings wäre der Lerneffekt für dich leider bei 0. Das macht meiner Meinung nach leider kein Sinn. Die Fehlermeldung sagt es ja bereits was das Problem ist. Schau dir die Klasse Student im Code an ... Im Prinzip haben wird dir deine Aufgabe schon erledigt. Das einzige, was du nur noch machen musst, ist aus der Daten Zeile ein Student Objekt erstellen. Dafür ist die Methode serialize in der Klasse Student zu implementieren die aus einem Daten-String, welcher alle drei Werte enthält - getrennt mit einem Semikolon ";", eine Instanz der Klasse Studen zurückliefert. Ich hoffe das du deine Lösung auch erklären kannst, falls du diese vorstellen musst. Bearbeitet 19. November 2020 von r4phi JimTheLion reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 1 Minute schrieb r4phi: Ich würde dir echt gerne Helfen und das Problem lösen, allerdings wäre der Lerneffekt für dich leider bei 0. Das macht meiner Meinung nach leider kein Sinn. Die Fehlermeldung sagt es ja bereits was das Problem ist. Schau dir die Klasse Student im Code an ... Ich habe meinen Code etwas geändert .. nur gibt der mir nichts aus .. public static void main(String[] args) { Map<Integer, Student> studentdaten = new HashMap<Integer, Student>(); Student student = studentdaten.get("Name;Matrikelnummer;Lieblingsfach"); Set<Integer> namen = studentdaten.keySet(); for(Integer name : namen) { System.out.println(name + "-->" + studentdaten.get(name) ); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 Tu dir mal den Gefallen und Kommentiere JEDE Codezeile. Der Kommentar enthält eine Beschreibung darüber was die Codezeile macht. Vielleicht wird dir dann selbst klar, warum das nicht funktionieren tut. JimTheLion reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 Ich würde vorschlagen, mit einem Tutorial anzufangen. So wird das nichts. Der komplette Code macht überhaupt keinen Sinn. Defneqon und maestro impostor reagierten darauf 2 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 7 Minuten schrieb Whiz-zarD: Ich würde vorschlagen, mit einem Tutorial anzufangen. So wird das nichts. Der komplette Code macht überhaupt keinen Sinn. Ich würde euch ja nicht um Hilfe bitten, wenn ich es verstehen würde ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 Ich hab aber eher das Gefühl, dass du es nicht verstehen möchtest und dir auch egal ist, was hier geschrieben wird. Anstatt die Tipps anzunehmen und daran zu arbeiten, machst du komplett was anderes. Ich rate dir dringend ein Tutorial durchzuarbeiten. Dir fehlen komplett die Grundlagen der Informatik. Dir ist nicht mal klar, was Datentypen sind. Wie soll man denn da helfen, ohne Frontalunterricht zu geben? Hier ist ein Tutorial: Ich denke (oder ich hoffe), dass dir dann auch einiges klarer wird und merkst, dass dein Code keinen Sinn ergibt. maestro impostor und JimTheLion reagierten darauf 2 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 public class main { public static void main(String[] args) { Map<String, Student> studentdaten = new HashMap<String, Student>(); //Student student = studentdaten.get("Name;Matrikelnummer;Lieblingsfach"); Set<String> lieblingsfach = studentdaten.keySet(); System.out.println(lieblingsfach); } Ich hab jetzt etwas recherchiert und möchte jetzt nur wissen warum ich als Ausgabe nur Output : [] bekomme ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 (bearbeitet) Was soll denn dabei deiner Meinung da rauskommen? Die HashMap wird nirgends gefüllt. Lass die HashMap doch mal weg. Die brauchst du sowieso nicht, was ich schon Tausend Mal geschrieben habe und erzeuge einfach nur ein einzelnes Student-Objekt. Bearbeitet 19. November 2020 von Whiz-zarD maestro impostor reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 6 Minuten schrieb Whiz-zarD: Was soll denn dabei deiner Meinung da rauskommen? Die HashMap wird nirgends gefüllt. Lass die HashMap doch mal weg. Die brauchst du sowieso nicht, was ich schon Tausend Mal geschrieben habe und erzeuge einfach nur ein einzelnes Student-Objekt. Ich brauch für die Aufgabe die ich erledigen muss eine HashMap ich würde es gerne ja weglassen und über eine List durchlaufen lassen, aber das kann ich nicht in diesem Fall. Versuch es doch mal zu verstehen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 Wie lautet überhaupt die Aufgabe? Auch diese Frage wurde hier schon oft gestellt und immer von dir ignoriert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maestro impostor Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 vor 4 Stunden schrieb java_anfaenger: Starten Sie ein neues MainProgramm. Holen Sie den ersten Datensatz bezüglich Lieblingsfächer. Gehen Sie die Daten-Zeilen durch und erzeugen Sie dementsprechend Student-Objekte. Speichern Sie die Student-Objekte nicht in einer List, sondern in einer Map: Schlüssel: Matrikelnummer → Wert: Student-Objekt Um die Implementierung zu vereinfachern, speichern Sie das Lieblingsfach als einen String und nicht als Fach-Objekt. Das ist die Aufgabenstellung ... die ich durcharbeiten muss @Whiz-zarD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 (bearbeitet) Dann fangen wir halt von vorne an. Wie muss der Code denn aussehen, um aus "Test1;1111;Mathe" das Lieblingsfach herauszufiltern? Die Methode split() wurde doch schon erwähnt. Hier steht alles, was man darüber wissen muss. Edit: Oder anders gefragt: Wie kannst du mit Hilfe der split()-Methode den String in seine Einzelteile zerlegen? Bearbeitet 19. November 2020 von Whiz-zarD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 9 Minuten schrieb Whiz-zarD: Dann fangen wir halt von vorne an. Wie muss der Code denn aussehen, um aus "Test1;1111;Mathe" das Lieblingsfach herauszufiltern? Die Methode split() wurde doch schon erwähnt. Hier steht alles, was man darüber wissen muss. Das hatte ich auch gesehen, hab es versucht, aber leider kein Erfolg gehabt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 public class main { public static void main(String[] args) { Map<String, Student> studentdaten = new HashMap<String, Student>(); Student student = new Student("", 0, null); Set<String> lieblingsfach = studentdaten.keySet(); System.out.println(lieblingsfach); } } Mein code sieht bis jetzt so aus ... ich weiß nicht weiter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 (bearbeitet) vor 5 Minuten schrieb java_anfaenger: Mein code sieht bis jetzt so aus ... ich weiß nicht weiter Weil du nie das machst, was man dir sagt... 🙄 Wie teilst du den String mittels split() auf? Dafür brauchst du noch keine HashMap oder sonstigen Kram. Schaue dir dieses Beispiel an und versuche es, in deinen Anwendungsfall umzuändern: String path = "www.tutego.com"; String[] segs = path.split( Pattern.quote( "." ) ); System.out.println( Arrays.toString(segs) ); // [www, tutego, com] In der Softwareentwicklung geht es darum, Probleme in kleine Teilprobleme zu lösen und mir geht es erstmal nur darum, die Informationen, die im string enthalten sind, zu teilen, sodass man einzeln darauf zugreifen kann. In dem Beispiel steht exakt beschrieben, wie das funktioniert. Hier wird eine URL in seine Einzelteile verlegt: Subdomain ("www"), Domain ("tutego" )und Top-Level-Domain ("de"). Bearbeitet 19. November 2020 von Whiz-zarD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 14 Minuten schrieb Whiz-zarD: Weil du nie das machst, was man dir sagt... 🙄 Wie teilst du den String mittels split() auf? Dafür brauchst du noch keine HashMap oder sonstigen Kram. Schaue dir dieses Beispiel an und versuche es, in deinen Anwendungsfall umzuändern: String path = "www.tutego.com"; String[] segs = path.split( Pattern.quote( "." ) ); System.out.println( Arrays.toString(segs) ); // [www, tutego, com] Ich verstehe dich nicht .. ich muss es doch nicht teilen wenn es einfach ein String ist und es definiert ist..kann ich doch einfach durch die Liste iterieren ..irgendwie so in dem Stil .. public class main { public static void main(String[] args) { Map<Student, List<String>> studentdaten = new HashMap<Student, List<String>>(); for(Student student : studentenDaten) { String lieblingsfach = student.getlieblingsFach(); Student student = new Student(lieblingsfach); System.out.print("Lieblingsfach" + student); } } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 (bearbeitet) vor 10 Minuten schrieb java_anfaenger: Ich verstehe dich nicht .. ich muss es doch nicht teilen wenn es einfach ein String ist und es definiert ist..kann ich doch einfach durch die Liste iterieren ..irgendwie so in dem Stil .. Vergiss doch endlich meinen Code... Dein String besteht doch aus drei Informationen: Name, Matrikelnummer und Lieblingsfach und du willst auf Matrikelnummer und Lieblingsfach zugreifen können. Schaue dir das Beispiel an. Hier passiert exakt das selbe: String path = "www.tutego.com"; String[] segs = path.split( Pattern.quote( "." ) ); System.out.println( Arrays.toString(segs) ); // [www, tutego, com] Der String besteht ebenfalls aus drei Informationen: Subdomain ("www"), Domain ("tugego") und Top-Level-Domain ("de"). Wie muss also nun dein Code aussehen, um die Informationen zu trennen? Hier brauchst du überhaupt noch keine HashMap. Die brauchen wir erst später. Bearbeitet 19. November 2020 von Whiz-zarD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 11 Minuten schrieb Whiz-zarD: Vergiss doch endlich meinen Code... Dein String besteht doch aus drei Informationen: Name, Matrikelnummer und Lieblingsfach und du willst auf Matrikelnummer und Lieblingsfach zugreifen können. Schaue dir das Beispiel an. Hier passiert exakt das selbe: String path = "www.tutego.com"; String[] segs = path.split( Pattern.quote( "." ) ); System.out.println( Arrays.toString(segs) ); // [www, tutego, com] Der String besteht ebenfalls aus drei Informationen: Subdomain ("www"), Domain ("tugego") und Top-Level-Domain ("de"). Wie muss also nun dein Code aussehen, um die Informationen zu trennen? Hier brauchst du überhaupt noch keine HashMap. Die brauchen wir erst später. public static void main(String[] args) { String path = "Name;Matrikelnummer;Lieblingsfach"; String[] segs = path.split( Pattern.quote( "." ) ); System.out.println( Arrays.toString(segs) ); So also? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 Das geht schon in die richtige Richtung aber schaue dir doch dein Code genau an und führe ihn doch mal aus und guck, was passiert. In der Variable segs wird nichts drinnen stehen, wieso ist das so? Nach welchem Kriterium splittest du nun dein String? Oder noch mal anders gefragt: Was macht split() bei dir? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JustALurker Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 vor 15 Minuten schrieb java_anfaenger: So also? Naja du hast es ja wahrscheinlich bereits ausgeführt und gesehen, das der String noch nicht in die 3 Teil-Strings "Name", "Martikelnummer" und "Lieblingsfach" unterteilt wurde. Aber als du das dreizeilige Beispiel von @Whiz-zarD in dein Programm eingefügt hast, wurde der String "www.tutego.com" ja in die 3 Teil-Strings "www", "tutego" und "com" unterteilt. vor 5 Stunden schrieb r4phi: Tu dir mal den Gefallen und Kommentiere JEDE Codezeile. Der Kommentar enthält eine Beschreibung darüber was die Codezeile macht. Versuch für die 3 Zeilen innerhalb deiner Main Methode mal diesen Tipp zu beherzigen. Was passiert in dieser Zeile? vor 14 Minuten schrieb java_anfaenger: String path = "Name;Matrikelnummer;Lieblingsfach"; Was passiert in dieser Zeile? vor 15 Minuten schrieb java_anfaenger: String[] segs = path.split( Pattern.quote( "." ) ); Was passiert in dieser Zeile? vor 15 Minuten schrieb java_anfaenger: System.out.println( Arrays.toString(segs) ); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
java_anfaenger Geschrieben 19. November 2020 Autor Teilen Geschrieben 19. November 2020 vor 3 Minuten schrieb Whiz-zarD: Das geht schon in die richtige Richtung aber schaue dir doch dein Code genau an und führe ihn doch mal aus und guck, was passiert. In der Variable segs wird nichts drinnen stehen, wieso ist das so? Nach welchem Kriterium splittest du nun dein String? Oder noch mal anders gefragt: Was macht split() bei dir? Ich habe ein Beispiel dessen gesehen wie es ausschauen soll am Ende und da sehe ich nichts mit splitten ... das ist mein Problem was ich versuche dir zu erklären .. es muss doch irgendwie so funktionieren .. public class main { public static void main(String[] args) { //String path = "Name;Matrikelnummer;Lieblingsfach"; //String[] segs = path.split( Pattern.quote( "." ) ); //System.out.println( Arrays.toString(segs) ); List<String> studentenDaten = new ArrayList<String>(); Map<Integer, List<String>> alleDaten = new HashMap<Integer, List<String>>(); for(Student student : alleDaten) { String lieblingsfach = Student.getLieblingsfach(); Student studentfach = new Student(lieblingsfach, 0, lieblingsfach); System.out.print("Lieblingsfach" + studentfach); } } } Nur sagt der mir das alleDaten falsch ist in der for schleife, dass er nur über ein Array iterieren kann. Es ist wahrscheinlich effizienter mit der split methode, doch geht es nicht ohne ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 19. November 2020 Teilen Geschrieben 19. November 2020 (bearbeitet) vor 8 Minuten schrieb java_anfaenger: Ich habe ein Beispiel dessen gesehen wie es ausschauen soll am Ende und da sehe ich nichts mit splitten ... das ist mein Problem was ich versuche dir zu erklären .. es muss doch irgendwie so funktionieren .. So schwer ist das doch nicht... Schaue dir den String an "Test1;1111;Mathe". Durch welches Zeichen werden die drei Informationen getrennt? Und dann schaue dir mein Beispiel an "www.tutego.de". Durch welches Zeichen werden die drei Informationen getrennt? Schaue dir dann den Code an und finde den Fehler. UND VERGISS DIE HASHMAP! DIE KOMMT SPÄTER! DIE BRAUCHST DU NOCH NICHT! Bearbeitet 19. November 2020 von Whiz-zarD 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.