猿问

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

我正在从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");




                }





            }



        });

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


慕妹3242003
浏览 88回答 1
1回答

凤凰求蛊

问题是您正在循环中设置操作。也就是说,为每对创建一个操作对象,然后进行分配。因此,在上次迭代之后,操作将设置为最新的对象,这显然是检查最后一对用户名 - 密码。循环翻译为类似的东西,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();    });另外,请确保在找到成功对后断开循环。否则同样的事情也会发生。
随时随地看视频慕课网APP

相关分类

Java
我要回答