CodeGym
Lernen
Kurse
Aufgaben
Umfragen & Quizze
Spiele
Hilfe
Zeitplan
Community
Nutzer
Forum
Chat
Artikel
Erfolgsgeschichten
Aktivität
Bewertungen
Abonnements
Helles Design
Frage
  • Bewertungen
  • Über uns
Start
Jetzt lernen
Jetzt lernen
  • Alle Fragen
CodeGym/Hilfe bei Java-Aufgaben/Was habe ich falsch gemacht ?
Sakka Mouid
Level 13
Hannover
  • 20.03.22
  • 662Aufrufe
  • 7Kommentare

Was habe ich falsch gemacht ?

Frage zur Aufgabe Die liebe Emma und die Sommerferien
Java Syntax,  Level 8,  Lektion 8
Gelöst


Erstelle eine Map<String, Date> und füge zehn Einträge hinzu, die (Nachname, Geburtsdatum)-Paaren entsprechen.
Entferne alle im Sommer geborenen Personen aus der Map.
Hinweis: Bei CodeGym dauert der Sommer vom 1. Juni bis 31. August.

Anforderungen:
  • Das Programm darf keinen Text auf dem Bildschirm anzeigen.
  • Das Programm darf keine Werte von der Tastatur lesen.
  • Die Methode mapErstellen() muss eine HashMap erstellen und zurückgeben, diee (String, Date)-Element besitzt und 10 Einträge enthält.
  • Die alleSommergeburtstagskinderEntfernen()-Methode muss alle im Sommer geborenen Personen aus der Map entfernen.
....
package de.codegym.task.task08.task0816; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Locale; /* Die liebe Emma und die Sommerferien */ public class Solution { public static HashMap<String, Date> mapErstellen() throws ParseException { DateFormat df = new SimpleDateFormat("MMMMM d yyyy", Locale.ENGLISH); HashMap<String, Date> map = new HashMap<String, Date>(); map.put("Stallone", df.parse("JUNE 1 1980")); //schreib hier deinen Code map.put("Mein Geburtstag", df.parse("MARCH 4 2001")); map.put("rtergerg", df.parse("JYLY 1 1999")); map.put("Atallone", df.parse("JUNE 5 2004")); map.put("rtallone", df.parse("JUNE 4 2007")); map.put("gtallone", df.parse("JUNE 26 2016")); map.put("ttallone", df.parse("JUNE 5 1950")); map.put("btallone", df.parse("JUNE 16 1990")); map.put("mtallone", df.parse("JUNE 12 1980")); map.put("dtallone", df.parse("JUNE 11 1990")); return map; } public static void alleSommergeburtstagskinderEntfernen(HashMap<String, Date> map) { //schreib hier deinen Code HashMap<String, Date> copy = new HashMap<String, Date>(map); int month; for (Date date : copy.values()) { month = date.getMonth() + 1; if ( month == 6 || month ==7 || month ==8){ map.remove(date); } } } public static void main(String[] args) { } }
0
Kommentare (7)
  • Beliebt
  • Neu
  • Alt
Sie müssen angemeldet sein um einen Kommentar zu hinterlassen
Lisa L
Level 47 , Nuremberg, Germany
20 März 2022, 21:16
Drei Dinge fallen mir auf... 1. Du testest deinen Code nicht. Mach es doch, wie ich es dir in deiner letzten Frage gezeigt habe... schreibe dir eine main Methode wie...
public static void main(String[] args) throws ParseException {
    HashMap<String, Date> gebMap = mapErstellen();
    alleSommergeburtstagskinderEntfernen(gebMap);

    for(Map.Entry<String, Date> element : gebMap.entrySet())
        System.out.format("Name: %s, month of birth: %s%n"
                , element.getKey()
                , new SimpleDateFormat("MMMM", Locale.ENGLISH).format(element.getValue()));
}
Dann fällt dir 2. auf: Zeile 22 und dann evtl. auch 3: du brauchst beides aus der Map, key und value. Also machst du es so wie ich in der main und benutzt ein Map.Entry oder du iterierst über ein keyset und holst dir den value
for (String key : copy.keySet())
{
    month = copy.get(key).getMonth() + 1;
    if (month >= 6 && month <= 8) {
        map.remove(key);
    }
}
+1
Lisa L
Level 47 , Nuremberg, Germany
20 März 2022, 21:24
Und falls es dich interessiert, hier ein Vorschlag, der nicht die deprecated getMonth Methode benutzt... die JavaDocs sagen, man möge nun bitte Calendar verwenden. So sie es und gleichzeitig hab ich auch noch mal einen Iterator verwendet... bietet sich hier ja an (wg. dem Löschen).
Calendar cal = GregorianCalendar.getInstance();
Iterator<String> it = map.keySet().iterator();
while (it.hasNext()) {
    cal.setTime(map.get(it.next())); // it.next() brings up the Date object and with that we set the calendar
    int month = cal.get(Calendar.MONTH); // now initialize a temp variable that holds the month number of the current object
    if (month >= Calendar.JUNE && month <= Calendar.AUGUST) // compare it to the summer month, no messing around with +1 necessary anymore
        it.remove(); // and delete in case it is a summer month
}
+2
Sakka Mouid
Level 13 , Hannover, Deutschland
21 März 2022, 15:15
Ach so , ich dachte ich kann einfach mir die Values holen , ohne über die Schluessel zu itierieren . Vielen Dank!!
0
Lisa L
Level 47 , Nuremberg, Germany
21 März 2022, 15:42
remove() löscht den übergebenen key. Wenn du ein Date übergibst, wird es automatisch in einen String gewandelt (keys sind hier ja Strings). Dann wird gesucht, ob es diesen key gibt -> nein, ist ja auch ein Wert. Das war's schon. Edit: es gäbe schon noch eine Möglichkeit... ändere Zeile 41 zu
map.values().remove(date);
das macht aber viel overhead und ist nicht wirklich leicht zu verstehen. Sollte deswegen imho nicht in dem Kontext verwendet werden.
0
Sakka Mouid
Level 13 , Hannover, Deutschland
21 März 2022, 19:10
Hallo Lisa . Sorry für die Störung , aber ich alles korrigiert wie du mir gesagt hast .ich glaube diesemal , das Problem liegt bei die dritte Anforderung , sie ist immer nicht erfüllt.
0
Lisa L
Level 47 , Nuremberg, Germany
21 März 2022, 19:34Lösung
siehe oben 1. Du testest deinen Code nicht. Dann fällt dir 2. auf: Zeile 22 - > JYLY ist kein Monat der geparst werden könnte
+2
Sakka Mouid
Level 13 , Hannover, Deutschland
21 März 2022, 19:48
Ach so . Das war diese JYLY . jetzt läuft es . Vielen Dank noch!!
+1
Lernen
  • Registrierung
  • Java-Kurs
  • Hilfe bei Aufgaben
  • Preise
  • Java-Syntax
Community
  • Nutzer
  • Artikel
  • Forum
  • Chat
  • Erfolgsgeschichten
  • Aktivität
  • Partnerprogramm
Unternehmen
  • Über uns
  • Kontakte
  • Bewertungen
  • Presse
  • CodeGym for EDU
  • FAQ
  • Support
CodeGymCodeGym ist ein Online-Kurs zum Erlernen der Java-Programmierung von Grund auf. Dieser Kurs ist eine perfekte Möglichkeit, Java als Anfänger zu meistern. Er enthält über 1200 Aufgaben mit sofortiger Überprüfung und einen wesentlichen Umfang an Java-Grundlagentheorie. Um Ihren Lernerfolg zu unterstützen, haben wir eine Reihe motivierender Funktionen implementiert: Quizze, Programmierprojekte, Inhalte zum effizienten Lernen und Karriereinformationen für Java-Entwickler.
Folgen Sie uns
Interface-Sprache
English
Deutsch
Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programmierer werden gemacht, nicht geboren" © 2026 CodeGym
MastercardVisa
"Programmierer werden gemacht, nicht geboren" © 2026 CodeGym