Два оператора if выполняются в коде Java

#java #netbeans

#java #netbeans

Вопрос:

В настоящее время я пытаюсь выполнить проверку формы входа персонала. но я понял в своем выводе проверки, что всякий раз, когда я ввожу значение в текстовое поле username, все равно появляется сообщение «пожалуйста, введите свое имя пользователя», а затем окно сообщения «недопустимые учетные данные». Вот мой код ниже :

  String username = usernameTxt.getText();
    String password = passwordTxt.getText();


    if  (username.contains(""))
  {
        JOptionPane.showMessageDialog(null,"Please Enter Your Username Credentials.");
    }
    else  if (password.contains (""))
  {
        JOptionPane.showMessageDialog(null,"Please Enter Your Password Credentials.");
    } 
   else if (password.contains ("") amp;amp; (username.contains("")))
  {
        JOptionPane.showMessageDialog(null,"Please Enter Your Login Credentials.");
    }
   if ((username.contains("staff") amp;amp; password.contains ("pass")))

    {
        JOptionPane.showMessageDialog(null,"Login Successfull","Success",JOptionPane.INFORMATION_MESSAGE);
        passwordTxt.setText(null);
        usernameTxt.setText(null);
        staffdashboard sd = new staffdashboard();
        sd.setVisible(true);
        this.setVisible(false);   
    }    
    else  
    {
        JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
        passwordTxt.setText(null);
        usernameTxt.setText(null);
    }
  

введите окно сообщения пользователя
окно сообщения с недопустимыми данными для входа

Что я упускаю и как остановить форму для вывода 2 сообщений одновременно?

Комментарии:

1. Любая строка содержит пустую строку. Я думаю, вы хотели использовать username.equals(«»)

2. Строка всегда будет содержать «». Вы, вероятно, хотите password.isEmpty()

Ответ №1:

Проблема заключается в первом операторе if: username.contains("")

Каждая строка содержит пустую строку. Вы должны заменить его на if("".equals(username))

Или используйте StringUtils.isBlank(username);

И то же самое для всех contains("")

Комментарии:

1. просто для подтверждения, должен ли я сделать это для else if (password.contains («»)) также или обычно только для первой строки кода?

2. точно! Вы должны заменить все свои contains(«»)

Ответ №2:

ответ @Naya правильный, однако вы можете захотеть удалить все пустые пробелы, предполагая, что они не разрешены в качестве допустимых входных данных, поэтому :

 if  (username.trim().equals("")) ...
else  if (password.trim.equals("")) ...
...