Zum Inhalt springen

r4phi

Mitglieder
  • Gesamte Inhalte

    370
  • Benutzer seit

  • Letzter Besuch

1 Benutzer folgt

Profil Info

  • Ort
    Ruhrpott

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

  1. Poste doch mal den kompletten Code. Nur Fetzen machen es schwer. Jedenfalls für mich. Sind ja schon paar Seiten weiter seit dem letzten Mal reinschauen.
  2. 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.
  3. 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.
  4. Führ den Code doch mal aus und schau was passiert
  5. r4phi

    Warnung CS0252

    Ich würde @Whiz-zarD Vorschlage beherzigen: if(string.Equals(btnStart?.Content, "Start")) Das ist sauberer und sicherer. Zudem wird dort der NULL Condition operator verwendet (btnStart?.), wodurch du eine NPE verhinderst. Des weiteren machst du in deinem Beispiel ein Unboxing was "unsauber" ist.
  6. r4phi

    Warnung CS0252

    Eben, deshalb wunder ich mich auch über die Antwort. Das Type Checking an der Stelle ist 100% richtig. Aber Hauptsache Doku richtig gelesen... 🙄
  7. r4phi

    Warnung CS0252

    Wo tut er das den?
  8. r4phi

    Warnung CS0252

    Gehen wir mal nur auf dein konkretes Problem: btnStart.Content = "Ende"; AFAIR ist Content vom Typ Objekt. Das heißt, du vergleichst in der Zeile Objekt mit String. Entsprechend bekommst du diese Warnung. Ich tippe darauf das die Beschriftung des Buttons überprüfen möchtest. Allerdings ist das scheinbar WPF. Damit hatte ich (leider) oder zum Glück nichts am Hut. Ein Content.ToString() könnte in einigen Fällen sicherlich knallen da WPF Buttons mehr an content haben können als "nur" Text.
  9. Hier mal das ganze basierend auf deinen "studidaten" Deine Aufgabe ist es nun, wie @Whiz-zarD bereits gesagt hat: Implementieren der deserialize Methode in der Studenten-Klasse. Wenn das geschafft ist dann wieder melden package de.fachinformatiker; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { final List<String> serializedStudents = datenstudi(); // Aus deinen Daten eine Liste von studenten objekten erzeugen. List<Student> deserializedStudents = serializedStudents.stream() .map(Student::deserialize) .collect(Collectors.toList()); Map<Integer, Student> studentsMap = new HashMap<Integer, Student>(); // jeden Studenten der Map hinzufügen wobei die Martrikelnummer der Key ist for (Student s : deserializedStudents) { studentsMap.put(s.getMatrikelnummer(), s); } // ODER // deserializedStudents.forEach(s -> studentsMap.put(s.getMatrikelnummer(), s)); // ODER // Map<Integer, Student> studentsMap = deserializedStudents.stream().collect(Collectors.toMap(Student::getMatrikelnummer, s -> s, (a, b) -> b)); // Ausgabe der Matrikelnummer und des Lieblingsfach in der Konsole // Die Map ausgeben for (Map.Entry<Integer, Student> entry : studentsMap.entrySet()) { Integer matrikelnummer = entry.getKey(); String lieblingsfach = entry.getValue().getLieblingsfach(); System.out.println("Martrikelnummer: " + matrikelnummer + "Lieblingsfach: " + lieblingsfach); } // ODER // studentsMap.forEach((k, v) -> System.out.println("Martrikelnummer: " + k + "Lieblingsfach: " + v.getLieblingsfach())); } public static List<String> datenstudi() { List<String> studidaten = new ArrayList<String>(); // Format: // Name ; Matrikelnummer ; Lieblingsfach studidaten.add("Test uno;999999;fach I"); studidaten.add("Horst Lied;111111;fach II"); return studidaten; } } class Student { private String name; private String lieblingsfach; private int matrikelnummer; public Student(String name, String lieblingsfach, int matrikelnummer) { this.name = name; this.lieblingsfach = lieblingsfach; this.matrikelnummer = matrikelnummer; } public String getName() { return this.name; } public String getLieblingsfach() { return this.lieblingsfach; } public int getMatrikelnummer() { return this.matrikelnummer; } public static Student deserialize(final String serializedString) { // Das musst du selbst implementieren... // Deinen "Datenstring" aufteilen // Die einzelnen Werte des Datenstrings nutzen um ein Studenten Objekt zu erstellen // new Student(name, lieblingsfach, matrikelnummer) // Objekt zurückliefern throw new UnsupportedOperationException("Das hier habe ich noch nicht implementiert"); } }
  10. Dann würde der alte Wert ersetzt werden. Also keine Exception Dann fängt das Problem aber schon früher an: Beim einlesen der Daten sicherstellen das die Matrikelnunmern eindeutig sind.
  11. Okay. Also gefühlt hast du das ganze noch nicht verstanden. Prinzipiell kannst du natürlich auch schreiben new HashMap<String, Student> Dadurch ist dann der Key in deiner Map vom Typ String. Da aber die Matrikel Nummer eigentlich ein Integer ist hat Whiz die Map so aufgebaut. Dein größtes Problem ist die Tatsache das dein Datensatz nur ein Text ist wo die Daten aneinandergereiht sind. Das müsstest du auflösen und in ein entsprechendes Objekt (Student) packen. Dadurch bist du viel flexibler und kommst auch einfacher zum Ziel. Daran hapert es allerdings scheinbar schon bei dir.
  12. @Whiz-zarD bei mir ist es genau anders herum 😅 aber ja. Stimmt. Das ist verwirrend genug 😅
  13. @Whiz-zarD Da fehlt ein NullCheck bei dem auslesen aus der Map. Wenn kein Eintrag gefunden wird gibt es null zurück. Dann knall das beim Zugriff auf die properties. Zudem ist das students.get(1111). Nicht über den “Index”
  14. Laut deinem String hat jeder Student doch nur ein Lieblingsfach. Jedenfalls: Splitten anhand des ; müsste ein Array mit Länge 3 rauskommen sonst Exception. Neues Studenten Objekt erstellen mit den jeweiligen Werten aus dem Array welches das Ergebnis des Split ist. Dann map.put(studentObj.getNummer(), studentenObj.getLieblingsfach()) Für jeden Studenten. Dann map.entrySet().forEach(x -> System.out.println(“Nummer: “ + x.getKey() + “ Lieblingsfach: “ + x.getValue()); Das war’s...

Fachinformatiker.de, 2020 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung