[英]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.