2016-03-22 5 views
2

Я работаю над проектом с регистрационной формой. Форма запрашивает у пользователя ввести пароль по своему выбору в поле JPassword и ввести его снова в другое поле JPassword.Как сравнить 2 пароля в java?

Я использую JOptionPane, чтобы запросить пользователя, если пароли не совпадают. но когда я использую passwordField.getPassword(). toString() на двух, они не совпадают. Я попытался ввести базовый «12345», например, на обоих, но мне все еще не повезло.

Я знаю, что вы должны использовать .equals(), но что эквивалентно этому для «не равно» без использования оператора «! =».

вот следующий код.

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); 
      } 

Любая помощь с этим была бы высоко оценена.

+0

'passwordField .getPassword() 'возвращает массив char .calling' toString() 'не дает вам пароль в виде строки. вы можете преобразовать в строку с помощью 'new String();' но вы не хотите. Есть причина, по которой он возвращает его как 'char array' вместо' String'. Прочитайте этот вопрос http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string-for-passwords-in-java –

+0

Что касается вашего редактирования после того, как вопрос получил обозначение как дубликат: ** Просто используйте '!' Результат '.equals() ', чтобы получить поведение как'! = '. ** – Matt

ответ

1

!= связанные с equals() для сравнения строк выражается !x.equals(y)

В качестве примера давайте возьмем ваш код, чтобы увидеть, если пароли не матч сделать следующее:

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

Это сработало для меня. используются следующие для того, чтобы пароли соответствовали, а также не были оставлены нулевой если (! Arrays.equals (passwordField.getPassword(), passwordFieldTwo.getPassword()) && \t \t \t \t \t passwordField.getPassword()! = NULL && passwordFieldTwo.getPassword()! = null) – Aaronward

+0

@Aaronward приятно слышать, вы можете принять мой ответ и перенести его? Тогда другие люди, которые видят этот вопрос, знают, что этот ответ правильный –