Сообщение об ошибке отображается перед переходом к следующему кадру, даже если имя пользователя и пароль верны. (ДЖАВА) - PullRequest
0 голосов
/ 05 ноября 2018

Это мой текстовый файл.

bk 456
bg 123
ll 222
pp 333

Это мой код.

    String m_uname = ManagerID.getText();
    String m_pw = managerpw.getText();

    try
    {
        BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\L\\Desktop\\NewAssignmentOODJ\\textfile\\ManagerLoginDetails.txt"));
        String reader;
        boolean login = false;

        while ((reader = br.readLine())!=null)
        {
            String[] split = reader.split(" ");
            if (m_uname.equals(split[0]) && m_pw.equals(split[1]))
            {
                login = true;
                ManagerForm mform = new ManagerForm();
                mform.setVisible(true);
                this.setVisible(false);
                break;
            }

            else
            {
                JOptionPane.showMessageDialog(null,"Whoops!","Error",JOptionPane.ERROR_MESSAGE);
            }
        }
     }

    catch (Exception e)
    {
        JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
    }

Функция входа работает, но она отображает сообщения об ошибках, прежде чем перейти к следующей форме jframe. Например. если я введу pp и 333, сообщение об ошибке будет отображаться 3 раза, прежде чем оно перейдет к следующему кадру.

Первый набор имени пользователя и пароля работает просто отлично.

1 Ответ

0 голосов
/ 05 ноября 2018

Вы должны отображать ошибку входа в систему только после завершения цикла. Он отображает ошибку три раза, потому что проверяет каждую пару перед следующей, поэтому, когда вы вводите «pp» и «333», он проверяет первые три пары и видит, что это не совпадает, отображая три сообщения об ошибках, прежде чем распознать последний как матч. Рассмотрим следующий код:

String m_uname = ManagerID.getText();
String m_pw = managerpw.getText();

try
{
    BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\L\\Desktop\\NewAssignmentOODJ\\textfile\\ManagerLoginDetails.txt"));
    String reader;
    boolean login = false;

    while ((reader = br.readLine())!=null)
    {
        String[] split = reader.split(" ");
        if (m_uname.equals(split[0]) && m_pw.equals(split[1]))
        {
            login = true;
            ManagerForm mform = new ManagerForm();
            mform.setVisible(true);
            this.setVisible(false);
            break;
        }
    }
    if(!login)
    {
        JOptionPane.showMessageDialog(null,"Whoops!","Error",JOptionPane.ERROR_MESSAGE);
    }
 }

catch (Exception e)
{
    JOptionPane.showMessageDialog(null,"Invalid Login Details","Login Error",JOptionPane.ERROR_MESSAGE);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...