Вход в Java на основе TXT-файла - PullRequest
0 голосов
/ 05 мая 2018

нужна помощь !, у меня есть задание, мне нужно сделать вход в систему по тексту, моя программа читает только первую строку

TXT выглядит так

Luthfi Luthfi Fitra
Fitra Fitra Khori
Khori Fitra Syifa

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

        public Login() {
    initComponents();
    txtPass.setText("");
}

public void Masuk(){
try {
String lokasi = "D:/settings.txt";
String username = txtUser.getText();
String password = txtPass.getText();


        FileReader fr = new FileReader(lokasi);
        BufferedReader br = new BufferedReader(fr);
        String line,user,pass;
        boolean isLoginSuccess = false;
       while ((line = br.readLine()) != null) {
           user = line.split(" ")[1].toLowerCase();
    pass = line.split(" ")[2].toLowerCase();
           if (user.equals(username) && pass.equals(password)){
               isLoginSuccess = true;
               this.dispose();
               MainMenu mm = new MainMenu();
               mm.setLocationRelativeTo(null);
               mm.setVisible(true);
               break;
           }
           else{
               JOptionPane.showMessageDialog(null, "USERNAME/PASSWORD SALAH","WARNING!!",JOptionPane.WARNING_MESSAGE);
               break;
           }
       }
       fr.close();

}catch(Exception e){
e.printStackTrace();
    }
        }

также, почему каждый раз, когда я вставляю правильное имя пользователя и идентификатор, он показывает мне, что я справляюсь, но также показывает, что ИМЯ ПОЛЬЗОВАТЕЛЯ / ПАРОЛЬ НЕПРАВИЛЬНЫЙ

1 Ответ

0 голосов
/ 05 мая 2018

У вас проблема с получением подстроки из файла, измените код, как показано ниже

        user = line.substring(0, 6).toLowerCase();
        pass = line.substring(7, 12).toLowerCase();

Обновление: на основании вашего комментария я меняю свое решение

1) Измените свой формат файла следующим образом

Luthfi Luthfi Hehe
Fitra Luthfi Khori
Syifa Khori Luthfi
Khori Syifa Luthfi

здесь первое слово в каждой строке - имя пользователя, а второе слово - пароль

2) Измените ваш код следующим образом

            user = line.split(" ")[1].toLowerCase();
            pass = line.split(" ")[2].toLowerCase();

3) если любое имя пользователя и пароль совпадают, войдите в систему и прервите цикл while

Обновите снова

package problems;

import java.io.BufferedReader;
import java.io.FileReader;

public class FileRd {

    public static void main(String args[]) {
        try {
            String lokasi = "D:/settings.txt";
            String username = txtUser.getText();
            String password = txtPass.getText();

            FileReader fr = new FileReader(lokasi);
            BufferedReader br = new BufferedReader(fr);
            String line, user, pass;
            boolean isLoginSuccess = false;
            while ((line = br.readLine()) != null) {
                user = line.split(" ")[1].toLowerCase();
                pass = line.split(" ")[2].toLowerCase();
                if (user.equals(username) && pass.equals(password)) {
                    isLoginSuccess = true;
                    this.dispose();
                    MainMenu mm = new MainMenu();
                    mm.setLocationRelativeTo(null);
                    mm.setVisible(true);
                    break;
                } 
            }
            if (!isLoginSuccess) {
                JOptionPane.showMessageDialog(null, "USERNAME/PASSWORD WRONG", "WARNING!!", JOptionPane.WARNING_MESSAGE);
            }
            fr.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
...