If-Abfrage liefert false zurück, wieso ?

R

Ro0kie

Gast
Liebes Java-forum.org!
Komischerweise lierft meine Methode immer ein false. wieso eig muss es doch geklappt haben ???:L

Code (Panel):

Java:
public class EmailadressPanel extends JPanel {

    //JButtons
    private JButton hinzufuegen,bearbeiten,loeschen,anzeigen;

    //JRadioButton
    private JRadioButton loeschenEmailRB,loeschenEintragRB;
    private JRadioButton anzeigenAllesRB,anzeigenEintragRB;

    //JPanels
    private JPanel p1,p2,p3,p4;
    private JPanel p1a,p2a,p3a,p4a;
    private JPanel leer1,leer2,leer3;

    //JTextFields
    private JTextField hinzufuegenNameTxt,hinzufuegenEmailsAnzahlTxt;
    private JTextField bearbeitenNameTxt,bearbeitenEmailTxt,bearbeitenAlteEmailTxt;
    private JTextField loeschenNameTxt,loeschenEmailTxt;
    private JTextField anzeigenNameTxt;

    //JTextArea
    private JTextArea anzeige;

    //JLabels
    private JLabel hinzufuegenName,hinzufuegenEmailsAnzahl;
    private JLabel bearbeitenName,bearbeitenEmail,bearbeitenAlteEmail;
    private JLabel loeschenName,loeschenEmail;
    private JLabel anzeigenName;

    public EmailadressPanel(){

        //Buttons init.
        hinzufuegen = new JButton("Hinzufügen");
        bearbeiten = new JButton("Bearbeiten");
        loeschen = new JButton("Löschen");
        anzeigen = new JButton("Anzeigen");

        //JRadioButtons
        loeschenEmailRB = new JRadioButton("Email löschen");
        loeschenEintragRB = new JRadioButton("Eintrag löschen");
        anzeigenAllesRB = new JRadioButton("Alle Einträge anzeigen");
        anzeigenEintragRB = new JRadioButton("Eintrag anzeigen");

        // ButtonGroups erstellen und befüllen
        ButtonGroup auswahl = new ButtonGroup();
        auswahl.add(this.loeschenEintragRB);
        auswahl.add(this.loeschenEmailRB);

        ButtonGroup auswahl2 = new ButtonGroup();
        auswahl2.add(this.anzeigenEintragRB);
        auswahl2.add(this.anzeigenAllesRB);

        //TextFields init.
        hinzufuegenNameTxt = new JTextField();
        hinzufuegenEmailsAnzahlTxt = new JTextField();
        bearbeitenNameTxt = new JTextField();
        bearbeitenEmailTxt= new JTextField();
        bearbeitenAlteEmailTxt = new JTextField();
        loeschenNameTxt = new JTextField();
        loeschenEmailTxt = new JTextField();
        anzeigenNameTxt= new JTextField();

        //TextArea init.
        anzeige = new JTextArea();


        //JLabels init.
        hinzufuegenName = new JLabel("Name:");
        hinzufuegenEmailsAnzahl = new JLabel("Emailsanzahl : (Nur bei nicht vorhanden Namen im Mailbook möglich)");
        bearbeitenName = new JLabel("Name:");
        bearbeitenEmail = new JLabel("Neue Email:");
        bearbeitenAlteEmail = new JLabel("Alte Email:");
        loeschenName = new JLabel("Name:");
        loeschenEmail = new JLabel("Email:");
        anzeigenName = new JLabel("Name:");

        //JPanels init.
        p1 = new JPanel();
        p2 = new JPanel();
        p3 = new JPanel();
        p4 = new JPanel();
        p1a = new JPanel();
        p2a = new JPanel();
        p3a = new JPanel();
        p4a = new JPanel();
        leer1 = new JPanel();
        leer2 = new JPanel();
        leer3 = new JPanel();

        //JPanels Layouts setzen
        p1.setLayout(new GridLayout(2,1));
        p2.setLayout(new GridLayout(2,1));
        p3.setLayout(new GridLayout(2,1));
        p4.setLayout(new GridLayout(2,1));
        p1a.setLayout(new GridLayout(6,1));
        p2a.setLayout(new GridLayout(6,1));
        p3a.setLayout(new GridLayout(6,1));
        p4a.setLayout(new GridLayout(6,1));

        //JPanels befüllen
        p1.add(hinzufuegen);
        p1.add(p1a);
        p1a.add(hinzufuegenName);
        p1a.add(hinzufuegenNameTxt);
        p1a.add(hinzufuegenEmailsAnzahl);
        p1a.add(hinzufuegenEmailsAnzahlTxt);

        p2.add(bearbeiten);
        p2.add(p2a);
        p2a.add(bearbeitenName);
        p2a.add(bearbeitenNameTxt);
        p2a.add(bearbeitenEmail);
        p2a.add(bearbeitenEmailTxt);
        p2a.add(bearbeitenAlteEmail);
        p2a.add(bearbeitenAlteEmailTxt);


        p3.add(loeschen);
        p3.add(p3a);
        p3a.add(loeschenEmailRB);
        p3a.add(loeschenEintragRB);
        p3a.add(loeschenName);
        p3a.add(loeschenNameTxt);
        p3a.add(loeschenEmail);
        p3a.add(loeschenEmailTxt);


        p4.add(anzeigen);
        p4.add(p4a);
        p4a.add(anzeigenAllesRB);
        p4a.add(anzeigenEintragRB);
        p4a.add(anzeigenName);
        p4a.add(anzeigenNameTxt);

        //JPanels unsichtbar machen
        p1a.setVisible(false);
        p2a.setVisible(false);
        p3a.setVisible(false);
        p4a.setVisible(false);

        //Layout setzen
        setLayout(new GridLayout(4,2));

        //Komponenten hinzufügen

        add(anzeige);
        add(p1);
        add(leer1);
        add(p2);
        add(leer2);
        add(p3);
        add(leer3);
        add(p4);

        //Elemente zum Actionlistener hinzufügen
        EmailadressAction h= new EmailadressAction();
        hinzufuegen.addActionListener(h);
        bearbeiten.addActionListener(h);
        loeschen.addActionListener(h);
        anzeigen .addActionListener(h);
        loeschenEmailRB.addActionListener(h);
        loeschenEintragRB.addActionListener(h);
        anzeigenAllesRB.addActionListener(h);
        anzeigenEintragRB.addActionListener(h);
        hinzufuegenNameTxt.addActionListener(h);
        hinzufuegenEmailsAnzahlTxt.addActionListener(h);
        bearbeitenNameTxt.addActionListener(h);
        bearbeitenEmailTxt.addActionListener(h);
        bearbeitenAlteEmailTxt.addActionListener(h);
        loeschenNameTxt.addActionListener(h);
        loeschenEmailTxt.addActionListener(h);
        anzeigenNameTxt.addActionListener(h);
    }

   private class EmailadressAction  implements ActionListener {
        public void actionPerformed(ActionEvent e)  {
        	Emailadress mailbook = new Emailadress();
        	LinkedList<String> maillist = new LinkedList <String>();
            if((e.getSource()==hinzufuegen)&&(hinzufuegenNameTxt.getText().trim().length() == 0)&&(hinzufuegenEmailsAnzahlTxt.getText().trim().length() == 0)){
                p1a.setVisible(true);

            }
            if((e.getSource()==hinzufuegen)&&(!hinzufuegenNameTxt.getText().equals("")) && (!hinzufuegenEmailsAnzahlTxt.getText().equals(""))){
            	if(JOptionPane.showInputDialog("Neuer Name in ihrem Mailbook (y|n)?").equals("y")){
                  int emailanzahl = Integer.parseInt(hinzufuegenEmailsAnzahlTxt.getText());
                  for(int i=0;i<emailanzahl;i++){
                    maillist.add(JOptionPane.showInputDialog("Bitte geben sie die neue Email ein"));
                  }
                  boolean status = mailbook.hinzufuegenNeu(hinzufuegenNameTxt.getText(),maillist);
                  if(status){
                    JOptionPane.showMessageDialog(null,"Erfolgreich" + "\n" + "Sie haben erfolgreich einen neuen Namen mit " + emailanzahl + " Emails hinzugefüget");
                  }else{
                    JOptionPane.showMessageDialog(null,"Fehlgeschlagen");
               }

           }else{
                  boolean status = mailbook.hinzufuegen(hinzufuegenNameTxt.getText(),JOptionPane.showInputDialog("Bitte geben sie die neue Email ein."));
                  if(status){
                     JOptionPane.showMessageDialog(null,"Erfolgreich" + "\n" + "Sie haben erfolgreich eine neue Email zu dem Namen " + hinzufuegenNameTxt.getText() + " hinzugefügt." );
                  }else{
                     JOptionPane.showMessageDialog(null,"Fehlgeschlagen");
               }

            }


            }


            if(e.getSource()==bearbeiten){
                p2a.setVisible(true);
            }
            if((e.getSource()==bearbeiten)&&(!bearbeitenNameTxt.getText().equals("")) && (!bearbeitenEmailTxt.getText().equals(""))&&(!bearbeitenAlteEmailTxt.getText().equals(""))){
               boolean status =mailbook.bearbeiten(bearbeitenNameTxt.getText(),bearbeitenAlteEmailTxt.getText(),bearbeitenEmailTxt.getText());
               System.out.println(""+mailbook.zuArray());
               if(status){
                   JOptionPane.showMessageDialog(null,"Erfolgreich"+ "\n" + "Sie haben erfolgreich die Email " + bearbeitenAlteEmailTxt+ " durch " + bearbeitenEmailTxt+ " ersetzt.");
               }
               else{
                   JOptionPane.showMessageDialog(null,"Fehlgeschlagen");
               }
            }


            if(e.getSource()==loeschen){
                p3a.setVisible(true);
            }
            if(e.getSource()==anzeigen){
                p4a.setVisible(true);
            }
        }


    }

}

Code (Emailadress):
Java:
public class Emailadress  {
    private Map<String,List> mails;

    /**
     * Default-Konstruktor
     */
    public Emailadress(){
        mails = new TreeMap<String,List>();
    }

    /**
     * Methode, welche es erlaubt nur einen vorhanden Namen
     * eine Emailadresse zu zuweisen.
     *
     * @param name Vorhander Name
     * @param mail Neu zu zuordnende Emailadresse.
     * @return true Gibt true zurück wenn hinzugefügt.
     */
    public boolean hinzufuegen(String name,String mail){
        List mailslist = new LinkedList<String>();
        mailslist.add(mails.get(name));
        mailslist.add(mail);
        mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
        return true;


    }

    /**
     * Methode, welche es erlaubt nur einen komplett neuen Namen und
     * Emailadresse einzufügen.
     *
     * @param name Neuer Name
     * @param mails Neue Liste an Emails in einem Set,
     *              sodass jede Email max. einmal vorkommen darf.
     */
    public boolean hinzufuegenNeu(String name,LinkedList emails){
        mails.put (name,emails);
        return true;


    }

    /**
     * Methode zu bearbeiten eines Namens.
     *
     * @param name     Vorhandener Name
     * @param email    Zu ändernde Email
     * @param neuEmail Neue zu zuweisende Email.
     * @return           Gibt true zurück wenn erfolgreich.Gibt true zurück wenn erfolgreich.

     */
    public boolean bearbeiten(String name,String email, String neuEmail){
         List mailslist = new LinkedList<String>();
         mailslist.add(mails.get(name));
         if( mailslist.contains(email)){
             mailslist.add(neuEmail);
             mailslist.remove(email);
             mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
             return true;
         }
         else{
             return false;
         }


    }

    /**
     * Methode zum löschen eines Namens und seiner Emailadressen.
     *
     * @param name Zu löschender Eintrag.
     * @return     Gibt true zurück wenn erfolgreich.
     */
    public boolean loeschenEintrag(String name){
        mails.remove(name);
        return true;
    }

    /**
     * Zum Löschen einer einzelnen Email in einem Namen.
     *
     * @param name
     * @param email
     * @return Gibt true zurück wenn erfolgreich.
     */
    public boolean loeschenEmail(String name,String email){
        List mailslist = mails.get(name);
         if(mailslist.contains(email)){
             mailslist.remove(email);
             mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
             return true;
         }
         else{
             return false;
         }

    }

    /**
     * Zum anzeigen eines einzelnen Eintarges.
     *
     * @param  name  Anzuzeigender Name.
     * @return txt   Gibt den ganzen Eintrag in einem String zurück.
     */
    public String zeigeName(String name){
         List mailslist = mails.get(name);
         String txt =mailslist.toString();
         return txt;

    }

    /**
     * Zum anzeigen des ganzen Emailadressbuches.
     *
     * @return Gibt das gesamte Emailadressbuch in einem String-Array zurück.
     */
    public String zuArray(){
      String txt="";
      Set eintraege = mails.entrySet();// TreeMap wird in eine Set gewandelt
      Iterator i2 = eintraege.iterator(); //Iterator des Set erstellen
      while (i2.hasNext()) {
         Map.Entry entry = (Map.Entry)i2.next();
         Object key = entry.getKey();  // Gibt den Schlüssel
         Object value = entry.getValue();  // Gibt den Wert
         txt = txt +(key + " : " + value+"\n");

      }
      return txt;

    }



}

Die Abfrage :
Java:
if(status){
                   JOptionPane.showMessageDialog(null,"Erfolgreich"+ "\n" + "Sie haben erfolgreich die Email " + bearbeitenAlteEmailTxt+ " durch " + bearbeitenEmailTxt+ " ersetzt.");
               }
               else{
                   JOptionPane.showMessageDialog(null,"Fehlgeschlagen");
               }
ist komischerweise immer FALSE

Danke im vorhinein :toll:

MfG
 
Zuletzt bearbeitet von einem Moderator:

JavaN3rd

Mitglied
Hey

Das war ein bisschen viel Code ^^, aber ging schon.
Ich denke der Fehler liegt hier:

Java:
List mailslist = new LinkedList<String>();
         mailslist.add(mails.get(name));
         if( mailslist.contains(email)){
             mailslist.add(neuEmail);
             mailslist.remove(email);
             mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
             return true;
         }
         else{
             return false;
         }
Soweit bist du wahrscheinlich auch noch gekommen, dies ist die einzige Möglichkeit bei der status false werden kann.

Java:
maillist.contains(email)
gibt also false zurück
und damit dies sein kann muss
Java:
mails.get(name)
null zurückgeben denn sonst wäre ja die mail in der liste enthalten.
Der Fehler kann nur dort liegen, meiner Ansicht nach.
 

hierUndDa

Mitglied
Versuch mal herauszufinden, woher der Fehler kommt.
z.B. frag den TreeMap ob er den Eintrag hat:

Java:
         if(  mails.containsKey(name)){
           System.out.println("IO!");
         }
         else{
             System.out.println("nicht i.o");
         }
 
R

Ro0kie

Gast
Hey

Das war ein bisschen viel Code ^^, aber ging schon.
Ich denke der Fehler liegt hier:

Java:
List mailslist = new LinkedList<String>();
         mailslist.add(mails.get(name));
         if( mailslist.contains(email)){
             mailslist.add(neuEmail);
             mailslist.remove(email);
             mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
             return true;
         }
         else{
             return false;
         }
Soweit bist du wahrscheinlich auch noch gekommen, dies ist die einzige Möglichkeit bei der status false werden kann.

Java:
maillist.contains(email)
gibt also false zurück
und damit dies sein kann muss
Java:
mails.get(name)
null zurückgeben denn sonst wäre ja die mail in der liste enthalten.
Der Fehler kann nur dort liegen, meiner Ansicht nach.

Glaub nicht das es an der Methode liegt weil hab extra eine unabhängige testklasse gemacht und die funktioniert einwandfrei :autsch:
 

Michael...

Top Contributor
Dann würde das Hinzufügen auch nicht gehn und das komischerweise funktioniert einwandfrei ???:L
Warum sollte das Hinzufügen nicht gehen?

Es wird jedes bei jedem Ausführen der actionPerformed ein neues Objekt erzeugt, dessen Map leer ist. In der Liste des neuen Objekts ist also auch kein Eintrag mit diesem Namen und somit auch keine Liste mit der eventuell zuvor in dem "alten" Objekt hinzugefügten E-Mail Adresse. Somit landet man immer im else Zweig und bei
Code:
return false;
.
 

hierUndDa

Mitglied
Kannst es ja mal testen:

Java:
public boolean hinzufuegen(String name,String mail){
        List mailslist = new LinkedList<String>();
        mailslist.add(mails.get(name));
        if (mails.get(name) == null) {
           return false;
        }
        mailslist.add(mail);
        mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
        return true;
    }
 
R

Ro0kie

Gast
Kannst es ja mal testen:

Java:
public boolean hinzufuegen(String name,String mail){
        List mailslist = new LinkedList<String>();
        mailslist.add(mails.get(name));
        if (mails.get(name) == null) {
           return false;
        }
        mailslist.add(mail);
        mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
        return true;
    }

Gibt false zurück, was kann ich dagegen tun ?
 

hierUndDa

Mitglied
Wie bereits von anderer Seite gesagt, liegt das Problem hier. Du erstellst immer wieder ein neues Objekt, wenn die Methode actionPerformed aufgerufen wird.

[JAVA=177]Emailadress mailbook = new Emailadress();[/code]

Mache mailbook einfach zu einer Instanzvariable, dann sollte es klappen.

[JAVA=28] private JLabel anzeigenName;

private Emailadress mailbook;

public EmailadressPanel(){

//Maillbook initialisieren
mailbook = new Emailadress();

//Buttons init.
hinzufuegen = new JButton("Hinzufügen");[/code]

Hinweis: Dann musst du natürlich die vorher aufgeführte Zeile 177 löschen!
 
Zuletzt bearbeitet:
R

Ro0kie

Gast
Wie bereits von anderer Seite gesagt, liegt das Problem hier. Du erstellst immer wieder ein neues Objekt, wenn die Methode actionPerformed aufgerufen wird.

[JAVA=177]Emailadress mailbook = new Emailadress();[/code]

Mache mailbook einfach zu einer Instanzvariable, dann sollte es klappen.

[JAVA=28] private JLabel anzeigenName;

private Emailadress mailbook;

public EmailadressPanel(){

//Maillbook initialisieren
mailbook = new Emailadress();

//Buttons init.
hinzufuegen = new JButton("Hinzufügen");[/code]

Hab ich schon länger hat es auch nicht gefixt, das muss an der Methode
Code:
bearbeiten()
liegen
 
R

Ro0kie

Gast
Poste doch mal den aktuellen Stand der Klasse
Code:
EmailadressPanel

Java:
public class EmailadressPanel extends JPanel {

    private Emailadress mailbook = new Emailadress();
    LinkedList<String> maillist = new LinkedList <String>();

    //JButtons
    private JButton hinzufuegen,bearbeiten,loeschen,anzeigen;

    //JRadioButton
    private JRadioButton loeschenEmailRB,loeschenEintragRB;
    private JRadioButton anzeigenAllesRB,anzeigenEintragRB;

    //JPanels
    private JPanel p1,p2,p3,p4;
    private JPanel p1a,p2a,p3a,p4a;
    private JPanel leer1,leer2,leer3;

    //JTextFields
    private JTextField hinzufuegenNameTxt,hinzufuegenEmailsAnzahlTxt;
    private JTextField bearbeitenNameTxt,bearbeitenEmailTxt,bearbeitenAlteEmailTxt;
    private JTextField loeschenNameTxt,loeschenEmailTxt;
    private JTextField anzeigenNameTxt;

    //JTextArea
    private JTextArea anzeige;

    //JLabels
    private JLabel hinzufuegenName,hinzufuegenEmailsAnzahl;
    private JLabel bearbeitenName,bearbeitenEmail,bearbeitenAlteEmail;
    private JLabel loeschenName,loeschenEmail;
    private JLabel anzeigenName;

    public EmailadressPanel(){

        //Buttons init.
        hinzufuegen = new JButton("Hinzufügen");
        bearbeiten = new JButton("Bearbeiten");
        loeschen = new JButton("Löschen");
        anzeigen = new JButton("Anzeigen");

        //JRadioButtons
        loeschenEmailRB = new JRadioButton("Email löschen");
        loeschenEintragRB = new JRadioButton("Eintrag löschen");
        anzeigenAllesRB = new JRadioButton("Alle Einträge anzeigen");
        anzeigenEintragRB = new JRadioButton("Eintrag anzeigen");

        // ButtonGroups erstellen und befüllen
        ButtonGroup auswahl = new ButtonGroup();
        auswahl.add(this.loeschenEintragRB);
        auswahl.add(this.loeschenEmailRB);

        ButtonGroup auswahl2 = new ButtonGroup();
        auswahl2.add(this.anzeigenEintragRB);
        auswahl2.add(this.anzeigenAllesRB);

        //TextFields init.
        hinzufuegenNameTxt = new JTextField();
        hinzufuegenEmailsAnzahlTxt = new JTextField();
        bearbeitenNameTxt = new JTextField();
        bearbeitenEmailTxt= new JTextField();
        bearbeitenAlteEmailTxt = new JTextField();
        loeschenNameTxt = new JTextField();
        loeschenEmailTxt = new JTextField();
        anzeigenNameTxt= new JTextField();

        //TextArea init.
        anzeige = new JTextArea();


        //JLabels init.
        hinzufuegenName = new JLabel("Name:");
        hinzufuegenEmailsAnzahl = new JLabel("Emailsanzahl : (Nur bei nicht vorhanden Namen im Mailbook möglich)");
        bearbeitenName = new JLabel("Name:");
        bearbeitenEmail = new JLabel("Neue Email:");
        bearbeitenAlteEmail = new JLabel("Alte Email:");
        loeschenName = new JLabel("Name:");
        loeschenEmail = new JLabel("Email:");
        anzeigenName = new JLabel("Name:");

        //JPanels init.
        p1 = new JPanel();
        p2 = new JPanel();
        p3 = new JPanel();
        p4 = new JPanel();
        p1a = new JPanel();
        p2a = new JPanel();
        p3a = new JPanel();
        p4a = new JPanel();
        leer1 = new JPanel();
        leer2 = new JPanel();
        leer3 = new JPanel();

        //JPanels Layouts setzen
        p1.setLayout(new GridLayout(2,1));
        p2.setLayout(new GridLayout(2,1));
        p3.setLayout(new GridLayout(2,1));
        p4.setLayout(new GridLayout(2,1));
        p1a.setLayout(new GridLayout(6,1));
        p2a.setLayout(new GridLayout(6,1));
        p3a.setLayout(new GridLayout(6,1));
        p4a.setLayout(new GridLayout(6,1));

        //JPanels befüllen
        p1.add(hinzufuegen);
        p1.add(p1a);
        p1a.add(hinzufuegenName);
        p1a.add(hinzufuegenNameTxt);
        p1a.add(hinzufuegenEmailsAnzahl);
        p1a.add(hinzufuegenEmailsAnzahlTxt);

        p2.add(bearbeiten);
        p2.add(p2a);
        p2a.add(bearbeitenName);
        p2a.add(bearbeitenNameTxt);
        p2a.add(bearbeitenEmail);
        p2a.add(bearbeitenEmailTxt);
        p2a.add(bearbeitenAlteEmail);
        p2a.add(bearbeitenAlteEmailTxt);


        p3.add(loeschen);
        p3.add(p3a);
        p3a.add(loeschenEmailRB);
        p3a.add(loeschenEintragRB);
        p3a.add(loeschenName);
        p3a.add(loeschenNameTxt);
        p3a.add(loeschenEmail);
        p3a.add(loeschenEmailTxt);


        p4.add(anzeigen);
        p4.add(p4a);
        p4a.add(anzeigenAllesRB);
        p4a.add(anzeigenEintragRB);
        p4a.add(anzeigenName);
        p4a.add(anzeigenNameTxt);

        //JPanels unsichtbar machen
        p1a.setVisible(false);
        p2a.setVisible(false);
        p3a.setVisible(false);
        p4a.setVisible(false);

        //Layout setzen
        setLayout(new GridLayout(4,2));

        //Komponenten hinzufügen

        add(anzeige);
        add(p1);
        add(leer1);
        add(p2);
        add(leer2);
        add(p3);
        add(leer3);
        add(p4);

        //Elemente zum Actionlistener hinzufügen
        EmailadressAction h= new EmailadressAction();
        hinzufuegen.addActionListener(h);
        bearbeiten.addActionListener(h);
        loeschen.addActionListener(h);
        anzeigen .addActionListener(h);
        loeschenEmailRB.addActionListener(h);
        loeschenEintragRB.addActionListener(h);
        anzeigenAllesRB.addActionListener(h);
        anzeigenEintragRB.addActionListener(h);
        hinzufuegenNameTxt.addActionListener(h);
        hinzufuegenEmailsAnzahlTxt.addActionListener(h);
        bearbeitenNameTxt.addActionListener(h);
        bearbeitenEmailTxt.addActionListener(h);
        bearbeitenAlteEmailTxt.addActionListener(h);
        loeschenNameTxt.addActionListener(h);
        loeschenEmailTxt.addActionListener(h);
        anzeigenNameTxt.addActionListener(h);
    }

   private class EmailadressAction  implements ActionListener {
       
       public void actionPerformed(ActionEvent e)  {
        	
            if((e.getSource()==hinzufuegen)&&(hinzufuegenNameTxt.getText().trim().length() == 0)&&(hinzufuegenEmailsAnzahlTxt.getText().trim().length() == 0)){
                p1a.setVisible(true);

            }
            if((e.getSource()==hinzufuegen)&&(!hinzufuegenNameTxt.getText().equals("")) && (!hinzufuegenEmailsAnzahlTxt.getText().equals(""))){
            	if(JOptionPane.showInputDialog("Neuer Name in ihrem Mailbook (y|n)?").equals("y")){
                  int emailanzahl = Integer.parseInt(hinzufuegenEmailsAnzahlTxt.getText());
                  for(int i=0;i<emailanzahl;i++){
                    maillist.add(JOptionPane.showInputDialog("Bitte geben sie die neue Email ein"));
                  }
                  boolean status = mailbook.hinzufuegenNeu(hinzufuegenNameTxt.getText(),maillist);
                  if(status){
                    JOptionPane.showMessageDialog(null,"Erfolgreich" + "\n" + "Sie haben erfolgreich einen neuen Namen mit " + emailanzahl + " Emails hinzugefüget");
                  }else {
                    JOptionPane.showMessageDialog(null,"Fehlgeschlagen");
                  }

           }else{
                  boolean status = mailbook.hinzufuegen(hinzufuegenNameTxt.getText(),JOptionPane.showInputDialog("Bitte geben sie die neue Email ein."));
                  if(status){
                     JOptionPane.showMessageDialog(null,"Erfolgreich" + "\n" + "Sie haben erfolgreich eine neue Email zu dem Namen " + hinzufuegenNameTxt.getText() + " hinzugefügt." );
                  }else{
                     JOptionPane.showMessageDialog(null,"Fehlgeschlagen");
               }

            }


            }


            if(e.getSource()==bearbeiten){
                p2a.setVisible(true);
            }
                
            if((e.getSource()==bearbeiten)&&(!bearbeitenNameTxt.getText().equals("")) && (!bearbeitenEmailTxt.getText().equals(""))&&(!bearbeitenAlteEmailTxt.getText().equals(""))){
               boolean status =mailbook.bearbeiten(bearbeitenNameTxt.getText(),bearbeitenAlteEmailTxt.getText(),bearbeitenEmailTxt.getText());
               System.out.println(""+mailbook.zuArray());
               if(status){
                     JOptionPane.showMessageDialog(null,"Erfolgreich" + "\n" + "Sie haben erfolgreich eine neue Email zu dem Namen " + hinzufuegenNameTxt.getText() + " hinzugefügt." );
                  }else{
                     JOptionPane.showMessageDialog(null,"Fehlgeschlagen");
               }
               System.out.println(""+mailbook.zuArray());

            }
            


                   if(e.getSource()==loeschen){
                p3a.setVisible(true);
            }

            if(e.getSource()==anzeigen){
                p4a.setVisible(true);
            }
        }


    }

}

und Emailadress :
Java:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
/**
 *Klasse, die man als Emailadressbuch verwenden kann,
 *
 * @author Martin Suschny
 * @version 2011-05-23
 */
public class Emailadress  {
    private Map<String,List> mails;

    /**
     * Default-Konstruktor
     */
    public Emailadress(){
        mails = new TreeMap<String,List>();
    }

    /**
     * Methode, welche es erlaubt nur einen vorhanden Namen
     * eine Emailadresse zu zuweisen.
     *
     * @param name Vorhander Name
     * @param mail Neu zu zuordnende Emailadresse.
     * @return true Gibt true zurück wenn hinzugefügt.
     */
public boolean hinzufuegen(String name,String mail){
        List mailslist = new LinkedList<String>();
        mailslist.add(mails.get(name));       
        mailslist.add(mail);
        mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
        if (mails.get(name) == null) {
           return false;
        }
        return true;
    }

    /**
     * Methode, welche es erlaubt nur einen komplett neuen Namen und
     * Emailadresse einzufügen.
     *
     * @param name Neuer Name
     * @param mails Neue Liste an Emails in einem Set,
     *              sodass jede Email max. einmal vorkommen darf.
     */
    public boolean hinzufuegenNeu(String name,LinkedList emails){
        mails.put (name,emails);
         if (mails.get(name) == null) {
           return false;
        }
        return true;


    }

    /**
     * Methode zu bearbeiten eines Namens.
     *
     * @param name     Vorhandener Name
     * @param email    Zu ändernde Email
     * @param neuEmail Neue zu zuweisende Email.
     * @return           Gibt true zurück wenn erfolgreich.Gibt true zurück wenn erfolgreich.

     */
    public boolean bearbeiten(String name,String email, String neuEmail){
        boolean status = false;
        List mailslist = new LinkedList<String>();
         mailslist.add(mails.get(name));
         if(mailslist.contains(email)){
             mailslist.add(neuEmail);
             mailslist.remove(email);
             mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
             status = true;
         }
         else{
             status =false;
         }
         return status;

    }

    /**
     * Methode zum löschen eines Namens und seiner Emailadressen.
     *
     * @param name Zu löschender Eintrag.
     * @return     Gibt true zurück wenn erfolgreich.
     */
    public boolean loeschenEintrag(String name){
        mails.remove(name);
        return true;
    }

    /**
     * Zum Löschen einer einzelnen Email in einem Namen.
     *
     * @param name
     * @param email
     * @return Gibt true zurück wenn erfolgreich.
     */
    public boolean loeschenEmail(String name,String email){
        List mailslist = mails.get(name);
         if(mailslist.contains(email)){
             mailslist.remove(email);
             mails.put(name,mailslist); //TreeMap überschreibt den Eintrag automatisch.
             return true;
         }
         else{
             return false;
         }

    }

    /**
     * Zum anzeigen eines einzelnen Eintarges.
     *
     * @param  name  Anzuzeigender Name.
     * @return txt   Gibt den ganzen Eintrag in einem String zurück.
     */
    public String zeigeName(String name){
         List mailslist = mails.get(name);
         String txt =mailslist.toString();
         return txt;

    }

    /**
     * Zum anzeigen des ganzen Emailadressbuches.
     *
     * @return Gibt das gesamte Emailadressbuch in einem String-Array zurück.
     */
    public String zuArray(){
      String txt="";
      Set eintraege = mails.entrySet();// TreeMap wird in eine Set gewandelt
      Iterator i2 = eintraege.iterator(); //Iterator des Set erstellen
      while (i2.hasNext()) {
         Map.Entry entry = (Map.Entry)i2.next();
         Object key = entry.getKey();  // Gibt den Schlüssel
         Object value = entry.getValue();  // Gibt den Wert
         txt = txt +(key + " : " + value+"\n");

      }
      return txt;

    }



}

Ich hab die Bearbeiten Methode nochmal unabhängig getestet und bin drauf gekommen das sie doch nicht klappt,wieso auch immer ???:L
 
R

Ro0kie

Gast
equals/hashCode sind überschrieben?

überschrieben hab ich nichts das ich wüsste aber ich glaub das problem liegt daran :
Code:
if(mailslist.contains(email))
man lann kein String mit einer Liste vergelichen weil mailliste ist sozusagen eine liste mit einer liste als eintrag, verstehts ihr es ?
 

muckelzwerg

Bekanntes Mitglied
Wärs jetzt nicht langsam endlich mal Zeit der Emailadress eine toString() Methode zu spendieren, einen Testablauf zusammenzustellen und an den relevanten stellen schön viele Ausgaben zu machen?
Ich wage ja gar nicht vom Debugger zu sprechen, aber so ein bisschen Ordnung wäre doch nicht schlecht.
"Hinzufügen funktioniert" was heißt das denn?
Die Funktion raucht nicht ab? Hinterher ist auch wirklich ein neues Element gespeichert? Nach den nächsten Aufruf sind es zwei?
...
 

Michael...

Top Contributor
überschrieben hab ich nichts das ich wüsste aber ich glaub das problem liegt daran :
Code:
if(mailslist.contains(email))
man lann kein String mit einer Liste vergelichen weil mailliste ist sozusagen eine liste mit einer liste als eintrag, verstehts ihr es ?
War auch mit der Schreibweise schwer zu entdecken:
Java:
List mailslist = new LinkedList<String>();
Hätte man das so geschrieben, hätte schon der Compiler bei späteren add(...) gemeckert.
Java:
List<String> mailslist = new LinkedList<String>();
Wobei Du eigentlich nur folgendes wolltest:
Java:
List<String> mailslist = mails.get(name);
Allerdings muss man hier anschließend auf null prüfen, da die Map bei nicht vorhandenem Schlüssel null zurück liefert.
 
R

Ro0kie

Gast
Java:
List<String> mailslist = mails.get(name);
Allerdings muss man hier anschließend auf null prüfen, da die Map bei nicht vorhandenem Schlüssel null zurück liefert.

bin ich auch gerade drauf gekommen, aber wie sieht das jz aus wann muss man immer diese
Code:
<String>
"Wrapper"-Klassen angeben ?, beim intalisieren sprich:
Code:
LinkedList<String> = new LinkedList <String>()

und wann noch ?
 

Michael...

Top Contributor
Ist kein "muss" hilft aber dem Kompiler bzw. dem Anwender Fehler zu erkennen.
Die Parametrisierung auf einen konkreten Typ macht man nur in der Deklaration der Variablen und bei der Initialisierung. (Letzteres soll ab Java 7 nicht mehr notwendig sein)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
Z DB-Abfrage liefert alte Werte Java Basics - Anfänger-Themen 11
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
L If Abfrage Java Basics - Anfänger-Themen 4
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
P Amazon SQS abfrage Java Basics - Anfänger-Themen 1
Marlena Bauer IBAN generieren (Deutschland) aus Abfrage von BLZ und Kontonummer? Java Basics - Anfänger-Themen 31
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
S Und-Abfrage mit mehreren Ungleich-Operatoren Java Basics - Anfänger-Themen 17
O if Abfrage erkennt String nicht Java Basics - Anfänger-Themen 1
NeoLexx Abfrage mit instanceof führt zu unerwarteten Wert Java Basics - Anfänger-Themen 9
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
C Javafunktion zur Abfrage eines Quellcodes Java Basics - Anfänger-Themen 15
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
G if Abfrage: Nicht jeder Fall berücksichtigt Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
S If Abfrage nur mit bestimmter Initialisierung? Java Basics - Anfänger-Themen 8
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
S Backspace Abfrage funktioniert nicht Java Basics - Anfänger-Themen 4
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
N Methoden Attribut Abfrage eines anderen Objektes Java Basics - Anfänger-Themen 36
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D SQL Abfrage anpassen Java Basics - Anfänger-Themen 17
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
O Datentypen Volle 16 Bit eines Short für flags Abfrage nutzen Java Basics - Anfänger-Themen 11
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
S Input/Output Programm läuft nach input-Abfrage nicht weiter. Java Basics - Anfänger-Themen 2
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
H if-Abfrage, ungleich und falscher true Wert? Java Basics - Anfänger-Themen 11
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
OlafHD Fehler Bei der if Abfrage Java Basics - Anfänger-Themen 5
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
D if-Abfrage Java Basics - Anfänger-Themen 12
J Abfrage für Programmwiederholung Java Basics - Anfänger-Themen 2
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
D Abfrage ob Variableninhalt korrekt Java Basics - Anfänger-Themen 5
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
X Ja nein abfrage? Java Basics - Anfänger-Themen 9
A Erste Schritte Problem bei meiner if-Abfrage! Java Basics - Anfänger-Themen 5
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
A Key Event - Abfrage von 2 gedrückten Tasten Java Basics - Anfänger-Themen 6
T Klasse für Google-Abfrage Java Basics - Anfänger-Themen 9
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
J Abfrage versetzen Java Basics - Anfänger-Themen 2
D Methoden Abfrage ob ein Wert bereits vorhanden ist Java Basics - Anfänger-Themen 1
thet1983 if() Abfrage Java Basics - Anfänger-Themen 2
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
H Erste Schritte If Abfrage Java Basics - Anfänger-Themen 3
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
U einlesen, abfrage Java Basics - Anfänger-Themen 25
T SQL Abfrage Läuft nicht Java Basics - Anfänger-Themen 5
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
O Downloaden: Trotz If Abfrage wird Datei heruntergeladen Java Basics - Anfänger-Themen 2
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
H if-Abfrage double wert Java Basics - Anfänger-Themen 5
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
B Boolean abfrage Java Basics - Anfänger-Themen 3
D Variablen Rücksprung nach If Abfrage Java Basics - Anfänger-Themen 16
T If- Abfrage Java Basics - Anfänger-Themen 8
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
D if-Abfrage Java Basics - Anfänger-Themen 6
G Einfache if-Abfrage der Main-Argumente Java Basics - Anfänger-Themen 3
C If abfrage zu getBackground Java Basics - Anfänger-Themen 2
T abfrage eines Integer Array s Java Basics - Anfänger-Themen 5
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
G Adminrechte abfrage Java Basics - Anfänger-Themen 5
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
R If-Abfrage, || funktioniert nicht Java Basics - Anfänger-Themen 4
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
B Abfrage mittels Variable vereinfachen Java Basics - Anfänger-Themen 6
C Treffer Abfrage Java Basics - Anfänger-Themen 19
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
T Datenbank Abfrage Exception Null Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben