为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复从文件读取时仅检查数组的最后一行用户名和密码

如何修复从文件读取时仅检查数组的最后一行用户名和密码

慕妹3242003 2022-09-28 16:05:29
我正在从csv文件中读取用户名的格式admin1, apple,  adminstaff1, orange, staffstaff1 在新行上,无论我有多少行,在登录时只会检查最后一行。        AtomicBoolean found = new AtomicBoolean(false);   btnLogin.setOnAction(e -> {        while (in.hasNextLine()) {            String s = in.nextLine().replaceAll("\\s+", "");                if (name.equals(sArray[0]) && password.equals(sArray[1])) {                    lMessage.setText("correct");                    openMainForm();                } else if (name.equals("") || password.equals("")) {                    lMessage.setText("Please enter a username and password");                } else {                    lMessage.setText("Please enter valid credentials");                }            }        });我希望如果在文件中找到用户名和密码组合,他们将能够登录,而不仅仅是如果用户名和密码是时间中的最后一个
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

问题是您正在循环中设置操作。也就是说,为每对创建一个操作对象,然后进行分配。因此,在上次迭代之后,操作将设置为最新的对象,这显然是检查最后一对用户名 - 密码。

循环翻译为类似的东西,

setOnAction(检查管理员 1、apple、admin 的操作对象 1)

设置操作(检查员工1、橙色、员工的操作对象2)

这有效地保留了上次创建的对象,并仅检查最后一对

您可能希望修改逻辑,以便只有一个操作对象。然后检查有效的用户名-密码对。

像这样:

btnLogin.setOnAction(e -> {


     while (in.hasNextLine() ) {

        // check condition here

        // don't forget to break when successful


      }

        in.close();

    });

另外,请确保在找到成功对后断开循环。否则同样的事情也会发生。


查看完整回答
反对 回复 2022-09-28
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号