JAVA Страница входа; Как использовать Read Notepad Twice? - PullRequest
0 голосов
/ 25 марта 2020

Я прошу мою JAVA программу, я имею дело со страницей входа. В моих кодах. У меня есть заправка методов чтения, чтобы получить список массивов. Затем в кнопке регистрации, как только я уже ввел данные, кстати, я использовал bufferedWriter, поэтому они будут добавлены в мой существующий файл .txt.

Тогда вот моя проблема , список массивов уже не обновляется, поскольку данные, помещенные в массив, находятся только в заправке, означает только с самого начала программы, что если у меня уже есть мой новые входные данные, они станут недействительными учетными данными в моем методе входа в систему. Я попытался скопировать мое заполнение в методе кнопки регистрации и метода частного класса, но все еще не работает, пожалуйста, помогите большое спасибо.

Вот мои коды для моего метода сканера:

private void initialize() throws FileNotFoundException {

    String datas = "";
    Scanner notePad = new Scanner(new File("loginData.txt"));
    List<String> temps = new ArrayList<String>();

    while (notePad.hasNext()) 
    {
      datas = notePad.next();
      temps.add(datas);
    }
    notePad.close();
    String[] dataFile = temps.toArray(new String[0]);
    int mainCount = dataFile.length-1;

и коды кадров, включая мои кнопки. Переходя к методу кнопки регистрации, вот код.

JButton registerButton = new JButton("REGISTER");
    registerButton.setFont(new Font("Arial", Font.BOLD, 12));
    registerButton.addActionListener(new ActionListener() {
        @SuppressWarnings("deprecation")
        public void actionPerformed(ActionEvent e) 
        {
            int countRegister = 0;

            while (!registerEmail.getText().equalsIgnoreCase(dataFile[countRegister]) && mainCount >= countRegister)
                {
                countRegister = countRegister + 2;
                    if (mainCount < countRegister) 
                    {
                    break;
                    }
                }

            if (mainCount <= countRegister) // No Existing Account
            {   
            try {
                FileWriter writer = new FileWriter("loginData.txt", true);
                BufferedWriter bufferedWriter = new BufferedWriter(writer);
                bufferedWriter.newLine();
                bufferedWriter.write(registerEmail.getText());
                bufferedWriter.newLine();
                bufferedWriter.write(registerPassword.getText());
                bufferedWriter.close();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            JOptionPane.showMessageDialog(frame, "Registered successfully, you can now login.", "Success", JOptionPane.INFORMATION_MESSAGE);
            }
            else
            {
            JOptionPane.showMessageDialog(frame, "Sorry, you have entered an existing account.", "Error", JOptionPane.ERROR_MESSAGE);   // Existing Account
            }
        }
    });
    registerButton.setBounds(194, 502, 97, 23);
    frmImma.getContentPane().add(registerButton);

1 Ответ

0 голосов
/ 25 марта 2020

Вы можете создать метод для получения данных и сравнения, прежде чем ваши логики c вызовут этот метод для получения refre sh input

private String[] data = new String[0];

private void selectData() throws FileNotFoundException {
    Scanner scanner = new Scanner(new File("loginData.txt"));
    List<String> temps = new ArrayList<String>();
    while (notePad.hasNextLine()) {
      temps.add(notePad.nextLine());
    }
    scanner.close();
    dataFile = new String[temps.size()];
    dataFile = arrlist.toArray(dataFile);
}

, вы можете использовать NIO из JDK8 +

private void selectData() throws IOException{
   dataFile = Files.lines(Paths.get(new 
   File("C:\\data.txt").getPath())).toArray(String[]::new);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...