簡體   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