# HashMap - Uni Hausaufgabe



## nubetx (14. Nov 2016)

Hallo, ich bin seit längeren an dieser Aufgabe dran (siehe Bild)
Ich komme daran nicht weiter? ._. Hat jemand vielleicht gute Beispiele wie ich sowas hinbekommen könnte?
Eventuell gute Anleitungen?
Hänge seit Tagen dran und es ergibt sich nichts ordentliches mit dem was ich aus dem Netz ausprobiere.


----------



## Robat (14. Nov 2016)

nubetx hat gesagt.:


> Ich komme daran nicht weiter? ._. ..
> Hänge seit Tagen dran und es ergibt sich nichts ordentliches mit dem was ich aus dem Netz ausprobiere.



Wie sieht denn dein Code bis jetzt aus?
Am besten immer gleich dein Code posten..

Wenn du noch kein Code hast sag uns was genau du nicht verstehst

Gruß
Robert


----------



## nubetx (14. Nov 2016)

Also in der Aufgabenstellung wird verlangt das man zB. Nüsse eingeben kann & dann die Anzahl davon.
Das soll dann in der Hashmap automatisch hinterlegt werden, oder?
Und genau daran hänge ich, wie ich das hinbekommen soll.
Es gibt zahlreiche Anleitungen wie man im Code was eingeben kann sodass es dann in der Konsole ausgegeben wird, aber sofern ich die Aufgabe richtig verstehe ist bei mir genau das Gegenteil verlangt also das ich in der Konsole zb:
Was für ein Lebensmittel haben Sie: Nuss
Anzahl: 14

eingeben muss und das es dann hinterlegt wird und ich es dann wieder abrufen kann?

Ein angefangenen Code habe ich zwar, aber hänge daran fest. Und bis jetzt ist der irgendwie echt nicht gut in meinen Augen


----------



## neoexpert (14. Nov 2016)

Eine (Hash)Map ermöglicht es Keys den  Values zuzuordnen. So ähnlich wie bei einem Array ein ArrayIndex dem dszugehörigem Wert zugeordnet ist.

```
HashMap<Lebensmittel,Quantität> hm=new HashMap<Lebensmittel,Quantität>();
hm.put(Möhre,5);
hm.get(Möhre);// gibt 5 zurück
```


----------



## Robat (14. Nov 2016)

nubetx hat gesagt.:


> Also in der Aufgabenstellung wird verlangt das man zB. Nüsse eingeben kann & dann die Anzahl davon.
> Das soll dann in der Hashmap automatisch hinterlegt werden, oder?



So siehts aus.



nubetx hat gesagt.:


> Es gibt zahlreiche Anleitungen wie man im Code was eingeben kann sodass es dann in der Konsole ausgegeben wird,


Das ist doch schon mal ein Ansatz.
Du hast also 2 Fragen:
-* Welches Lebensmittel soll eingetragen werden?:
- Wie oft besitzten Sie dieses Lebensmittel
*
Den Input speicherst du meinet wegen in 2 Variablen (String --> Name und int --> Anzahl) und fügst diese danach mit deiner eigenen Methode zur HashMap hinzu.

Insgesamt sollst du 2 Methoden erstellen. Eine, die ein Lebensmittel hinzufügt und eine, die die Anzahl des Lebensmittels ausgibt.
Diese könnten so aussehen:

```
public void addFood()
{

    OUT: Name des Lebensmittel?
    IN name;

    OUT: Anzahl des Lebensmittel?
    IN quantity;

    IF fridgeContent NOT CONTAINS name
    {
          fridgeContent.add(name, quantitiy); 
    }
    ELSE
    {
        OUT: Lebensmittel existiert bereits.
    }
}

public void getQuantity()
{
  
     OUT: Von welchem Lebensmittel wollen Sie die Anzahl wissen?
     IN: name;

     IF fridgeContent CONTAINS name
     {
          quantity = fridgeContent.get(name);
          OUT: Das Lebensmittel <name> ist <quantitiy> mal vorhanden.
     }
}
```

(Nur Pseudocode!)

Jetzt noch ein paar Denkanstöße:

Initialiseren einer Map:

```
Map fridgeContent = new HashMap<String, Integer>();
```

Input:

```
Scanner s = new Scanner(System.in);
String name = s.nextLine();

int quantity = Integer.parseInt(s.nextLine());
```

Output:

```
System.out.println("Ausgabe mit neuer Zeile");
System.out.print("Ausgabe ohne neue Zeile");
```

Wert einer HashMap bekommen / auf existenz prüfen

```
int quantity = fridgeContent.get("gurke");

if(fridgeContent.contains("banane")
{
     // ... Lebensmittel ist vorhanden
}
```

So..
Ich denke mal damit solltest du jetzt erstmal ein Stück kommen.

Die Kurzfassung kriegst du bei @neoexpert 

Gruß
Robert


----------



## thecain (14. Nov 2016)

Einfach die Map stimmt bei beiden nicht.


```
Map<String, Integer> kuehlschrankInhalt = new HashMap<>();
```


----------



## Robat (14. Nov 2016)

thecain hat gesagt.:


> Einfach die Map stimmt bei beiden nicht.
> 
> 
> ```
> ...



Danke für den Hinweis! Hätte vielleicht noch mal drüber lesen sollen


----------



## Xyz1 (14. Nov 2016)

Hier kommt wieder mein Flow chart ins Spiel:

Ich werd langsam besser darin^
Zuerst erstellst du den Kühlschrank mit String und Integer
Dann rufst du die Methode add Lebensmittel auf
Diese prüft dann, ob es den Eintrag gibt, und addiert dann die Mengen 
Anschließend ruft sie sich selber wieder auf - oder eine Schleife

Ihr könnt mich ja verbessern, wenn ich die Aufgabe falsch verstanden haben sollte


----------

