Operatoren IF Abfrage liefert falsches Ergebnis

DerSchlangen

Mitglied
Hallo
Ich habe da etwas gebaut und verstehe das was die If Abfrage da macht nicht. Egal was ich in txt_Pwd - oder eben auch nichts - es wird immer der else Pfad ausgeführt. Liegt das daran das in String nur ein Zeiger liegt der auf das Char Array zeigt? Wie löse ich mein Dilemma?

Danke 🙂

Java:
  JButton btn_login = new JButton("Logindaten eingeben");
  btn_login.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
    DbIpAdress=txt_Host.getText();
    DbPort=txt_Port.getText();
    DbName=txt_Name.getText();
    DbUser=txt_User.getText();
    char[] zeichen = txt_pwd.getPassword();
    DbUserPasswd = new String(zeichen);
    lbl_DBname.setText("Datenbank Name: "+DbName);
    lbl_DBname.setForeground(Color.BLACK);
    if (DbUserPasswd == "")
    {
     lbl_PWD.setText("Kein Password eingegeben!");
     lbl_PWD.setForeground(Color.RED);
    }
    else
    {
     lbl_PWD.setText("Password vorgewählt");
     lbl_PWD.setForeground(Color.BLACK);
    }
   }
  });
 
Zuletzt bearbeitet:
Richtig, das ist DER Anfängerfehler in Java: eine String Variable ist eine Referenz auf ein String-Objekt, welches intern mit einem char[] haushaltet. Mit == vergleichst du aber nur die Referenzen (also die Pointer, wenn man so will). Die Lösung ist: .equals.
 
Java:
if (DbUserPasswd.equals("")
    {
     lbl_PWD.setText("Kein Password eingegeben!");
     lbl_PWD.setForeground(Color.RED);
    }
    else
    {
     lbl_PWD.setText("Password vorgewählt");
     lbl_PWD.setForeground(Color.BLACK);
    }

Sollte also richtig sein? Das funktioniert leider auch nicht...
 
Java:
if (DbUserPasswd.equals("")
    {
     lbl_PWD.setText("Kein Password eingegeben!");
     lbl_PWD.setForeground(Color.RED);
    }
    else
    {
     lbl_PWD.setText("Password vorgewählt");
     lbl_PWD.setForeground(Color.BLACK);
    }

Sollte also richtig sein? Das funktioniert leider auch nicht...

Das KANN garnicht funktionieren, weil dir nach dem equals("") eine runde Klammer zu fehlt.
 

Neue Themen


Zurück
Oben