2016-03-22 23 views
2

Kayıt formuyla bir proje üzerinde çalışıyorum. Form kullanıcıya numaralı telefondan bir JPassword Alanında kendi seçtikleri bir şifre girmesini ve başka bir JPassword Alanında tekrar girmesini ister.Java'da 2 şifre nasıl karşılaştırılır?

Parolaların eşleşmemesi durumunda kullanıcıya sormak için bir JOptionPane kullanıyorum. ancak ikisi üzerinde passwordField.getPassword(). toString() kullandığımda, eşleşmiyorlar. Örneğin her ikisine de temel olarak "12345" girmeyi denedim ama hala şansım yok.

.equals() yöntemini kullanmanız gerektiğini biliyorum, ancak "! =" Işlecini kullanmadan "eşit değil" için buna eşdeğerdir.

burada aşağıdaki kod bulunmaktadır.

if(e.getSource() == submit) 
    { 
     String name = nameTextField.getText(); 
     String address = addressTextField.getText(); 
     String phoneNumber = numberTextField.getText(); 
     String dob = datePicker.getDateFormatString(); 
     String password = passwordField.getPassword().toString(); 
     String password2 = passwordFieldTwo.getPassword().toString(); 


     try 
     { 
      //If the user leaves the field empty 
      if(name == null || address == null || phoneNumber == null || dob == null 
       || password == null || password2 == null) 
      { 
       //Error message appears to prompt the user to 
       //complete the form 
       JOptionPane.showMessageDialog(null, "All fields must be complete to submit.", "Woops", JOptionPane.ERROR_MESSAGE); 
      } 

      if(password != password2) 
      { 
        JOptionPane.showMessageDialog(null, "Passwords do not match.", "Woops", JOptionPane.ERROR_MESSAGE); 
        passwordField.setText(null); 
        passwordFieldTwo.setText(null); 
      } 

Bu konuda herhangi bir yardım çok takdir edilecektir. bir örnek görmek için, kodunuzu çekmenize olanak verir gibi

+0

'alanında şifrenizi .getPassword() 'bir char dizisi döndürür. .alling toString()' bir dizge olarak size şifre vermez. "String" ile dizgeye dönüştürebilirsiniz; ancak siz bunu söyleyemezsiniz. "String" yerine "char array" olarak döndürmek için bir neden vardır. Bu soruyu http://stackoverflow.com/questions/8881291/why-is-char-tercih edilen-over-string-for-parola-in-java –

+0

Soru sonrası düzenleme hakkında bir çift olarak işaretlenmiş: ** Sadece '' '' '' '' sonuçlarında kullanın.() 'a benzer bir davranış elde etmek için!! ='. ** – Matt

cevap

1

!= dize karşılaştırma için equals() ilişkin !x.equals(y)

ile ifade edilir İki şifre değil maç Aşağıdakileri yaparsanız:

if (!Arrays.equals(passwordField.getPassword(), passwordFieldTwo.getPassword())) { 
    JOptionPane.showMessageDialog(null, "Passwords do not match.", "Woops", JOptionPane.ERROR_MESSAGE); 
} 
+1

Bu benim için çalıştı. şifreleri eşleşti emin olmak için aşağıdakileri kullanılan ve aynı zamanda boş kalmıştı değil if (! Arrays.equals (passwordField.getPassword(), passwordFieldTwo.getPassword()) && \t \t \t \t \t passwordField.getPassword()! = null && passwordFieldTwo.getPassword()! = null) – Aaronward

+0

@Aaronward duymak güzel, cevabımı kabul edip bunu kabul edebilir misiniz? Sonra bu soruyu gören diğer insanlar bu cevabın doğru olduğunu biliyorlar. –

İlgili konular