如何解决此代码中的“代码额外进入其他部分”while循环问题?

我正在尝试打印用户名和密码,但是代码两次输入 else 部分。


我为条件添加了打印功能。


在用户名和密码匹配的情况下,我接受了"Matched!"和"Invalid username or password!"消息。


在唯一匹配的用户名的情况下,我接受"Username!"并"Invalid username or password!"发送消息。


在唯一匹配的密码的情况下,我采取了"Password"和"Invalid username or password!"消息。


如果没有匹配,我会收到"Invalid username or password!"两次消息。


下面是代码


Statement myStmt = myConn.createStatement();

ResultSet resultSet = myStmt.executeQuery("SELECT * FROM `Employee`");

while(resultSet.next()) {

    if(resultSet.getString("username").matches(textField_1.getText()) && resultSet.getString("password").matches(textField_2.getText())) {

        System.out.println("Matched!");

    } else {

        System.out.println("Invalid username or password!");

    }

}

结果假设为“匹配!” 为有效的密码和用户名。结果假设为“无效的用户名或密码!” 对于无效的用户名或密码。


慕森王
浏览 96回答 2
2回答

白衣非少年

您基本上将所有员工详细信息存储到 resultSet 中,但随后您将遍历它们中的每一个。如果您有 3 组用户名和密码并且只有一组匹配,那么您将获得Matched!InvalidInvalid相反,您可能只想检查一个用户名和密码?不确定您在寻找什么。此外,当您比较用户名和密码时,请使用 .equals()。编辑编辑上面的答案,使用.equals()而不是.matches().Statement myStmt = myConn.createStatement();ResultSet resultSet = myStmt.executeQuery("SELECT * FROM `Employee`");boolean check = false;while(resultSet.next()){     if(resultSet.getString("username").equals(textField_1.getText()) &&        resultSet.getString("password").equals(textField_2.getText()))    {         System.out.println("Matched!");        check = true;        break;    }}if (check == false){      System.out.println("Invalid username or password!");}

哔哔one

Statement myStmt = myConn.createStatement();ResultSet resultSet = myStmt.executeQuery("SELECT * FROM `Employee`");boolean check = false;while(resultSet.next()){     if(resultSet.getString("username").matches(textField_1.getText()) && resultSet.getString("password").matches(textField_2.getText())){         System.out.println("Matched!");        check = true;        break;    }}if (check == false){      System.out.println("Invalid username or password!");}现在 while 循环将搜索正确的用户名和密码,如果没有将打印 Invalid。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java