Collections Collections Maps Frage

xnixx

Neues Mitglied
Hallo Zusammen,

ich habe hier ein kleines Problem mit einer Aufgabe bezüglich Maps.
Hierbei soll in einer Klasse eine Map gepeichert werden. Dabei sollen zusätzlich zwei Methoden zum hinzufügen und ausgaben eingearbeitet werden.

Das ist mein bisheriger Quelltext:

Java:
import java.util.*;

public class Benutzerverwaltung {
	
    // main-Methode
    public static void main(String[] args) {

    	 Hashtable<String, String> benutzer = new Hashtable<String, String>();

         benutzer.put("name1", "e@mail1.de");
         benutzer.put("name2", "e@mail2.de"); 
         
         add("name3","e@mail3.de");
         
         printAll();
    }
 
   void add(String name, String Email) {
    	benutzer.put(name, Email);
    }
    
    void printAll() {
    	String s;
    	for (String elem : benutzer.keySet()) {
            s = benutzer.get(elem);
            System.out.println(elem + " - " + s);
        }
    }    
    
}

Ich weiß, dass die Variable benutzer nicht in den Methoden verfügbar ist. Leider stehe ich auf dem Schlauch und wäre für Hilfe echt dankbar! 😳
Im Grunde sollte der Code zumindest wohl so aussehen..

Vielen Dank im Vorraus & Grüße,
xnixx
 
Zuletzt bearbeitet von einem Moderator:
Guten Morgen Njans!

..manchmal sieht man den Wald vor lauter Bäumen nicht 😉
Habe es jetzt so gelöst:

Java:
public class EmailManagement {
	
    // main-Methode
    public static void main(String[] args) {

    	 Benutzer b = new Benutzer("name1","emailo1@web.de"); // neues Objekt Benutzer anlegen
         b.add("name3","e@mail3.de"); // neuen Benutzer hinzufügen
         b.printAll(); // alle benutzer ausgeben
    }     
}

Java:
import java.util.Hashtable;

public class Benutzer{
    
    String benutzername, email; // Attribute benutzername und email
    private Hashtable<String, String> benutzer = new Hashtable<String, String>(); //private map instanziiren
    
    // Konstruktor für den Benutzer
    public Benutzer(String benutzername,String email) {
        this.benutzername = benutzername;
        this.email = email;
    }
    
    void add(String name, String Email) {
    	benutzer.put(name, Email); // neuen benutzer der map hinzufügen
    }
    
    void printAll() {
    	String s; // variable initialisieren
    	for (String elem : benutzer.keySet()) { // alle benutzer in der map durchlaufen und ausgeben
            s = benutzer.get(elem);
            System.out.println(elem + " - " + s);
        }
    } 
}

Danke nochmal für den Hinweis! 🙂
 
Zuletzt bearbeitet von einem Moderator:
:shock: Nein....

Was du machst ist;
Java:
Benutzer b = new Benutzer("name1","emailo1@web.de"); // neues Objekt Benutzer anlegen
b.add("name3","e@mail3.de"); // dem Nutzer "name1" einen weiteren Namen und E-Mail Adresse geben - nicht was du willst
b.printAll(); // alle namen und e-mail-Adressen von diesem benutzer ausgeben
}

Da bringst du jetzt aber einiges durcheinander. Zuerst einmal: Für jeden Benutzer ein neues Objekt anlegen ist eine gute Idee.
In einem Nutzer allerdings weitere Namen und Adressen zu speichern weniger.

Genau wie du eine Klasse Nutzer hast (wo jedes Objekt einen Nutzer repräsentiert, also nur Name und Adresse), benötigst du eine Klasse "Benutzerverwaltung", die die Methoden "add(Nutzer nutzer)" und "printAll()" besitzt.

So wie du es aktuell hast, mag es zwar funktionieren, aber es ist eine grauenhafte Architektur und ich rate dir dringend(!) das umzubauen. Gerade wenn du Anfänger bist, solltest du dir sowas gar nicht erst angewöhnen. 😉
 
Zuletzt bearbeitet:

Zurück
Oben