You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Java的TXT文件登录程序仅读取首行问题求助

解决TXT文件仅读取第一组账号的登录程序问题

嘿,我看你遇到了登录程序只能用第一个账号的问题——你的settings.txt里明明有好几组账号密码,但程序就认第一个,对吧?

先理清楚你的文件结构:你的TXT是把所有账号密码放在一行里,用空格分隔,比如Luthfi Luthfi是第一组账号密码,Fitra Fitra是第二组,以此类推。你之前的代码应该是只读取了这一行里的前两个元素,没遍历后面的内容。

我给你修改一下Masuk方法,让它能检查所有的账号密码对:

public void Masuk(){
    try {
        String lokasi = "D:/settings.txt";
        String username = txtUser.getText().trim();
        String password = txtPass.getText().trim();
        
        // 读取整个文件的内容
        File file = new File(lokasi);
        Scanner scanner = new Scanner(file);
        // 读取整行内容(因为你的所有账号都在一行里)
        String line = scanner.nextLine();
        scanner.close();
        
        // 按空格拆分内容,\\s+可以匹配任意数量的空格
        String[] credentials = line.split("\\s+");
        
        boolean loginSuccess = false;
        // 每两个元素一组,遍历所有账号密码对
        for (int i = 0; i < credentials.length; i += 2) {
            // 防止数组越界,比如最后一个元素刚好是奇数个的情况
            if (i + 1 >= credentials.length) break;
            
            String storedUser = credentials[i];
            String storedPass = credentials[i + 1];
            
            // 对比输入的账号和密码
            if (storedUser.equals(username) && storedPass.equals(password)) {
                loginSuccess = true;
                break;
            }
        }
        
        // 根据验证结果给出反馈
        if (loginSuccess) {
            JOptionPane.showMessageDialog(this, "登录成功!");
            // 这里可以添加登录后跳转主界面的代码
        } else {
            JOptionPane.showMessageDialog(this, "用户名或密码错误!");
            txtPass.setText("");
        }
        
    } catch (FileNotFoundException e) {
        JOptionPane.showMessageDialog(this, "找不到设置文件:" + e.getMessage());
        e.printStackTrace();
    }
}

还要给你几个小建议:

  • 对用户输入做了trim()处理,避免用户不小心输入前后空格导致匹配失败
  • 增加了文件未找到的异常捕获,程序不会直接崩溃
  • 如果你以后想让TXT文件更易读,建议改成每行一组账号密码的格式,比如:
    Luthfi Luthfi
    Fitra Fitra
    Khori Khori
    Fitra Syifa
    
    这种情况下,你可以把读取部分改成逐行读取,代码会更清晰:
    // 替换原来的读取整行和遍历数组部分
    Scanner scanner = new Scanner(file);
    boolean loginSuccess = false;
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine().trim();
        if (line.isEmpty()) continue; // 跳过空行
        String[] cred = line.split("\\s+");
        if (cred.length >= 2) {
            String storedUser = cred[0];
            String storedPass = cred[1];
            if (storedUser.equals(username) && storedPass.equals(password)) {
                loginSuccess = true;
                break;
            }
        }
    }
    scanner.close();
    

这样修改后,你的程序就能识别所有的账号密码了!

内容的提问来源于stack exchange,提问作者user8775227

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:23:29