为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2024-01-05 16:36:00
我有一个家庭作业,其中我必须使用 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 中的每个完整的登录用户的输入值,如果没有完整的匹配,则仅显示错误。但是我的程序对于第一个数组列表值工作正常,但对于下一个值不起作用。
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

class UserData {

  private final String username;

  private final String password;


  UserData(String username, String password) {

    this.username = username;

    this.password = password;

  }


  public String getUsername() {

    return username;

  }


  public String getPassword() {

    return password;

  }

}


class Registration {

  private final List<UserData> userData = new ArrayList<>();


  public void regUser() {

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

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

    userData.add(new UserData(regName, regPass));

  }


  public void login() {

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

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


    boolean isValidUser = userData.stream()

        .anyMatch(user -> user.getUsername().equals(name) && user.getPassword().equals(password));


    if (isValidUser) {

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

    } else {

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

    }

  }

}


查看完整回答
反对 回复 2024-01-05
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

除了代码质量差之外,问题还在于:

您的名称为“name1”,密码为“pass1”
,您检查它是否与每个注册用户相同。
您可能想使用 List 接口的 contains() 方法
,因此如果用户名和密码在列表中,则写入成功消息,否则失败。


查看完整回答
反对 回复 2024-01-05
  • 2 回答
  • 0 关注
  • 45 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信