Passwort und Passwort wiederholen in if-Abfrage vergleichen

Grazzle

Mitglied
Schönen guten Tag, ich muss für ein Projekt einen Kalender erstellen, welcher eine Benutzerverwaltung beinhält.
Im Registrierungsprozess wird vom Benutzer
- Benutzername
- Passwort
- Passwort wiederholen
- ECTS
- Studiengang
erfragt.
In einer Methode hab ich diverse if Abfragen
Java:
public boolean eingabenUeberpruefen() {
boolean eingabeKorrekt = true;
if (txtUsername.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Username wurde nicht eingegeben");
eingabeKorrekt = false;
}

uswusw
Mein Problem ist, dass ich überprüfen möchte, ob Passwort und Passwort wiederholen übereinstimmen (sind beides JPasswordfield) ...bisher sind sämtliche versuche gescheitert, hab auch versucht die beiden JPasswordfield als String zu casten, also:
Java:
char[] passwortChar = pwPasswort.getPassword();
String passwort = new String(passwortChar);
&
Java:
char[] passwortNochmalChar = pwPasswortNochmal.getPasswort();
String passwortNochmal = new String(passwortNochmalChar);

aber nichts hat geholfen, bitte um Hilfe
 
Zuletzt bearbeitet von einem Moderator:
also meine if-Abfrage ist
Java:
} else if { (!passwort.equals(passwortNochmal)) {
JOptionPane.showMessageDialog(null, "Passwoerter stimmen nicht überein")
eingabeKorrekt = false;
}

Ohne das gecaste wurde bei jeder Eingabe die Meldung, dass die Passwoerter nicht übereinstimmen ausgegeben.
Nun mit dem Cast wird trotzdem registriert, auch wenn die Passwoerter nicht übereinstimmen
 
Nun hab ich es auch mit else if (!(passwort == passwortNochmal)) versucht, bekomme bei richtiger und falscher eingabe die meldung, dass die passwörter nicht übereinstimmen
 
Java:
public boolean eingabenUeberpruefen() {
        boolean eingabeKorrekt = true;
        if (txtUsername.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Username wurde nicht "
                + "eingegeben.");
            eingabeKorrekt = false;
        } else if (txtStudiengang.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Studiengang wurde nicht "
                + "eingegeben.");
            eingabeKorrekt = false;
        } else if (pwPasswort.getPassword().equals("")) {
            JOptionPane.showMessageDialog(null, "Passwort wurde nicht "
                + "eingegeben.");
            eingabeKorrekt = false;
        } else if (pwPasswortNochmal.getPassword().equals("")) {
            JOptionPane.showMessageDialog(null, "Das wiederholte Passwort "
                + "wurde nicht eingegeben.");
            eingabeKorrekt = false;
        } else if (!(passwort == passwortNochmal)) {
            JOptionPane.showMessageDialog(null, "Passwoerter stimmen nicht "
                + "ueberein.");
            eingabeKorrekt = false;
     
        } else if (txtECTS.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Credits wurden nicht "
                + "eingegeben.");
            eingabeKorrekt = false;
        }
        try {
            int i = Integer.parseInt(txtECTS.getText());
            if (i < 0) {
                JOptionPane.showMessageDialog(null, "Credits duerfen nicht "
                    + "negativ sein.");
                eingabeKorrekt = false;
            }
        } catch (NumberFormatException exc) {
            JOptionPane.showMessageDialog(null, "Credits duerfen nicht "
                   + "negativ sein.");
            eingabeKorrekt = false;
        }
      
        return eingabeKorrekt;
    }
 
Nun hab ich es auch mit else if (!(passwort == passwortNochmal)) versucht, bekomme bei richtiger und falscher eingabe die meldung, dass die passwörter nicht übereinstimmen

Mit == vergleichst du bei Objekten nur die Referenz! Um den Inhalt zu prüfen musst du mit equals vergleichen 😉
Was @AG10 sagen will: Wenn bei einem "if elseif" eine if-Bedingung zutrifft dann werden die restlichen gar nicht mehr geprüft! Möglicherweise greift eine if-Bedingung davor schon und die Passwörter werden dann gar nicht mehr geprüft.
 
Nun habe ich es wieder zu
Java:
else if (!passwort.equals(passwortNochmal)) {
            JOptionPane.showMessageDialog(null, "Passwoerter stimmen nicht "
                + "ueberein.");
            eingabeKorrekt = false;
    
        }

geändert, er registriert in beiden fällen
 
Der Vergleich sieht so passend aus, der Fehler wird an einer anderen Stelle (vermutlich einer hier nicht gezeigten) liegen.

blind würd ich sagen, beim zuweisen von passwort und passwortNochmal
 
Da kann ich @mrBrown nur zustimmen. Bei mir funktioniert folgendes:

Code:
        String password, wiederholen;
        password = new String(passwortFeld.getPassword());
        wiederholen = new String(wiederholenFeld.getPassword());
        if (!password.isEmpty() && password.equals(wiederholen)) {
            // mache was ....
        }
 
Das, was du und JStein52 gesagt haben, hab es auf seine Art ausprobiert
Java:
if (!pass.isEmpty() && !pass.equals(wiederholen)) {
JOptionPane.showMessageDialog(null, "Passwörter stimmen nicht überein")
}

Funktioniert genauso wie es soll, wenn beide Passwörter gleich sind, quasi in beiden feldern "123" steht, wird der Benutzer registriert und man kann sich mit den Daten einloggen, und wenn in einem Feld "123" und im Wiederholungfeld "1234" steht, kommt die oben erwähnte Meldung.
 
Du hast aber die Abfrage ein bisschen verdreht und die stimmt noch nicht ganz. Wenn das erste Feld leer ist würde er wohl auch registrieren, egal was im zweiten steht oder ?
Wenn du die Abfrage so machen willst dass der If-Zweig der Fehlerfall ist dann musst du so abfragen:
Code:
if (pass.isEmpty() || !pass.equals(wiederholen)) {
JOptionPane.showMessageDialog(null, "Passwörter stimmen nicht überein")
}
 

Zurück
Oben