猿问

我的登录函数中数组列表第二个第三位的值匹配时出错?

我有一个家庭作业,其中我必须使用 joptionpane 登录注册表并仅使用 arrayList 获取输入,这是一项基本任务,但我被困在这里,“我创建了一个函数来匹配数组列表中的值,但是它显示错误的输出”。


我尝试过使用不同的循环并对输入值使用不同的位置,但没有得到所需的结果。


public class register {

    ArrayList regUser;


    register()

    {

        this.regUser=new ArrayList();

    }


     public void regUser(){

            String regName = JOptionPane.showInputDialog(null, "Enter User Name:");

            String regPass = JOptionPane.showInputDialog(null, "Enter User Password:");


            userData p = new userData(regName,regPass);


            regUser.add(p);

        }

public void login()

    {

        String name = JOptionPane.showInputDialog(null, "Enter User Name:");

        String password = JOptionPane.showInputDialog(null, "Enter User Password:");


        for(int i=0; i<regUser.size(); i++)

        {

            userData k = (userData)regUser.get(i);

            if(name.equals(k.name) && password.equals(k.password)){

                JOptionPane.showMessageDialog(null, "Welcome to Rent A Car\n All cars data here....");


            }

            JOptionPane.showMessageDialog(null, "Wrong login info please try again");


        }

我接受我的登录方法检查 arraylist 中的每个完整的登录用户的输入值,如果没有完整的匹配,则仅显示错误。但是我的程序对于第一个数组列表值工作正常,但对于下一个值不起作用。


神不在的星期二
浏览 102回答 2
2回答

倚天杖

class UserData {&nbsp; private final String username;&nbsp; private final String password;&nbsp; UserData(String username, String password) {&nbsp; &nbsp; this.username = username;&nbsp; &nbsp; this.password = password;&nbsp; }&nbsp; public String getUsername() {&nbsp; &nbsp; return username;&nbsp; }&nbsp; public String getPassword() {&nbsp; &nbsp; return password;&nbsp; }}class Registration {&nbsp; private final List<UserData> userData = new ArrayList<>();&nbsp; public void regUser() {&nbsp; &nbsp; String regName = JOptionPane.showInputDialog(null, "Enter User Name:");&nbsp; &nbsp; String regPass = JOptionPane.showInputDialog(null, "Enter User Password:");&nbsp; &nbsp; userData.add(new UserData(regName, regPass));&nbsp; }&nbsp; public void login() {&nbsp; &nbsp; String name = JOptionPane.showInputDialog(null, "Enter User Name:");&nbsp; &nbsp; String password = JOptionPane.showInputDialog(null, "Enter User Password:");&nbsp; &nbsp; boolean isValidUser = userData.stream()&nbsp; &nbsp; &nbsp; &nbsp; .anyMatch(user -> user.getUsername().equals(name) && user.getPassword().equals(password));&nbsp; &nbsp; if (isValidUser) {&nbsp; &nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Welcome to Rent A Car\n All cars data here....");&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; JOptionPane.showMessageDialog(null, "Wrong login info please try again");&nbsp; &nbsp; }&nbsp; }}

梦里花落0921

除了代码质量差之外,问题还在于:您的名称为“name1”,密码为“pass1”,您检查它是否与每个注册用户相同。您可能想使用 List 接口的 contains() 方法,因此如果用户名和密码在列表中,则写入成功消息,否则失败。
随时随地看视频慕课网APP

相关分类

Java
我要回答