繁体   English   中英

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

[英]How to fix only last line of array being checked for username and password when read from a file

我正在从CSV文件中读取用户名,格式为

admin1, apple,  admin
staff1, orange, staff

在staff1处于新行中时,无论我有多少行,登录时都会检查最后一行。

        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");



                }




            }


        });

我希望,如果在文件中找到了用户名和密码组合,他们将能够登录,而不仅仅是用户名和密码是最后一次登录

问题是您将动作设置为循环。 即,为每对创建一个动作对象,然后对其进行分配。 因此,在最后一次迭代之后,该操作将被设置为最新对象,这显然是在检查最后一对用户名密码。

循环转化为类似的东西,

setOnAction(检查admin1,apple,admin的actionobject1)

setOnAction(用于检查staff1,orange,staff的actionobject2)

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

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

像这样:

btnLogin.setOnAction(e -> {

     while (in.hasNextLine() ) {
        // check condition here
        // don't forget to break when successful

      }
        in.close();
    });

另外,请确保一旦找到成功的配对,就中断循环。 否则会发生同样的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM