Считывание имени пользователя и пароля из текстового файла и сравнение их с текстовыми полями не сработает, даже если они одинаковые - PullRequest
0 голосов
/ 27 января 2019

Мне нужно создать приложение для входа / регистрации, которое будет хранить и извлекать информацию о пользователях из файла (.txt).Поэтому я сравниваю имя пользователя и пароль из моего файла с именем пользователя и паролем из моих текстовых полей, и даже если они совпадают, программа все равно не будет соответствовать им.

В какой-то момент это работало, но это было когдаУ меня был только класс Login.После того, как я закончил класс Register, он не будет работать, хотя я ничего не изменил в классе Login.Я также попытался написать текст так же, как в первый раз, но безуспешно.

Login класс:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

class Login extends JFrame implements ActionListener {

    JButton SUBMIT;
    JPanel panel;
    JLabel label1, label2;
    final JTextField text1, text2;

    Login() {
        label1 = new JLabel();
        label1.setText("Username:");
        text1 = new JTextField(15);

        label2 = new JLabel();
        label2.setText("Password:");
        text2 = new JPasswordField(15);

        SUBMIT = new JButton("SUBMIT");

        panel = new JPanel(new GridLayout(3, 1));
        panel.add(label1);
        panel.add(text1);
        panel.add(label2);
        panel.add(text2);
        panel.add(SUBMIT);
        add(panel, BorderLayout.CENTER);
        SUBMIT.addActionListener(this);
        setTitle("LOGIN FORM");
    }

    public void actionPerformed(ActionEvent ae) {
        File loginf = new File("filename.txt");

        try {
            Scanner read = new Scanner(loginf);
            read.useDelimiter("\\n|,");
            boolean login = false;
            while (read.hasNext()) {
                String user = read.next();
                String pass = read.next();
                String thisuser = text1.getText();
                String thispass = text2.getText();
                System.out.println(user + " " + pass);
                System.out.println(thisuser + " " + thispass);
                if (thisuser.equals(user) && thispass.equals(pass)) {
                    System.out.println("OOOKKKK");
                    login = true;
                    break;
                }
            }
            if (login) {
                NextPage page = new NextPage();
                page.setVisible(true);
                JLabel label = new JLabel("Welcome:" + text1.getText());
                page.getContentPane().add(label);
                setVisible(false);
            } else {
                JOptionPane.showMessageDialog(null, "Incorrect username or password");
                text1.setText("");
                text2.setText("");
            }
            read.close();
        } catch (FileNotFoundException qwerty) {
            JOptionPane.showMessageDialog(null, "Can't find a text file");
        }
    }

}

ЧастиRegister класс, который я использую:

ln95: FileWriter out = null;
ln98: out = new FileWriter("filename.txt", true);


ln149:out.write(username + "," + pass);
ln150:out.write(System.getProperty("line.separator"));

Выход из логина:

student1 Student1
student2 Student2    
student2 Student2
student2 Student2    
student3 Student3
student2 Student2

1 Ответ

0 голосов
/ 27 января 2019

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

            System.out.println(user + " " + pass);
            System.out.println(thisuser + " " + thispass);

Если это так, то thispass имеет один дополнительный возврат каретки.Это вызывает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...