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

从TXT文件读取数据:实现登录成功后显示用户姓名求助

实现登录成功后显示用户姓名的解决方案

你的登录验证逻辑已经走通了,只需要补充捕获用户姓名和登录成功后展示这两步就可以实现需求。我帮你调整了代码,同时做了一些细节优化,避免常见的异常问题:

核心修改说明

  • 在匹配用户名密码时,同步提取并保存用户的姓名信息
  • 登录成功后通过UI标签或弹窗展示欢迎语
  • 补充了资源自动关闭和格式校验,防止数组越界、资源泄漏等问题

修改后的完整代码

import javax.swing.JOptionPane;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;

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

        // 用try-with-resources自动关闭流,比手动关闭更安全可靠
        try (FileReader fr = new FileReader(lokasi);
             BufferedReader br = new BufferedReader(fr)) {

            String line, user, pass, fullName; 
            boolean isLoginSuccess = false; 
            String loggedInUserName = ""; // 存储登录成功后的用户姓名

            while ((line = br.readLine()) != null) { 
                String[] parts = line.split(" "); 
                // 跳过格式不正确的行,避免数组越界异常
                if (parts.length < 4) {
                    continue;
                }
                user = parts[1].toLowerCase(); 
                pass = parts[2].toLowerCase(); 
                // 如果姓名是多单词(比如"John Doe"),用这行拼接完整姓名
                fullName = String.join(" ", Arrays.copyOfRange(parts, 3, parts.length));
                // 如果姓名是单个单词,直接用 fullName = parts[3]; 即可

                if (user.equals(username) && pass.equals(password)) { 
                    isLoginSuccess = true; 
                    loggedInUserName = fullName; // 保存匹配到的用户姓名
                    break; // 找到目标用户后直接跳出循环,提升效率
                } 
            } 

            // 处理登录结果
            if (isLoginSuccess) { 
                // 方式1:用界面标签显示(假设你有一个名为lblWelcome的JLabel)
                lblWelcome.setText("欢迎回来," + loggedInUserName + "!"); 
                // 方式2:弹出提示框
                JOptionPane.showMessageDialog(null, "登录成功!欢迎你," + loggedInUserName + "!"); 
                // 这里可以添加跳转到主界面的逻辑
            } else { 
                JOptionPane.showMessageDialog(null, "用户名或密码错误!"); 
            }
        }
    } catch (IOException e) { 
        JOptionPane.showMessageDialog(null, "读取配置文件失败:" + e.getMessage()); 
        e.printStackTrace(); 
    } 
}

额外注意点

  1. 确保你的settings.txt每行格式为:[前缀标识] [用户名] [密码] [用户姓名](示例:user alice 1234 Alice Smith)
  2. 如果你的姓名字段在配置行中的位置不同,调整parts数组的索引即可
  3. try-with-resources是Java 7+的特性,能自动释放文件流资源,避免内存泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:32:57