检查用户名是否已经在ArrayList中注册

时间:2020-10-09 07:01:31

标签: java arraylist

我有这个JFrame程序,它仅按用户的全名,用户名,城市,年龄来注册用户。我在方法中检查文本字段。如果按下寄存器JButton,它将检查您是否正确输入了信息,然后为数组列表创建了一个新用户。

我需要添加一张支票,如果用户名存在,当我按下“注册”按钮时,它将告诉我。我尝试在区域列表中创建新用户之前在我的方法中使用if语句检查我的文本字段,但该语句只是被忽略。我试图在注册按钮的方法之前做出if语句,但还是一无所获。我将在下面将我的操作侦听器代码粘贴到我的方法中。

编辑:发布我使用的方法以更加清楚。

this.productData.push(...this.productDatagreen)
public void fieldChecks()
    {
        if(fullnameField.getText().length() < 6)
        {
            Helpers.showError("Name must have at least 7 characters");
            return;
        }

        if(usernameField.getText().length() < 4)
        {

                Helpers.showError("Username must have at least 4 characters!");
            return;
        }

        if(cityField.getText().length() < 5)
        {
            Helpers.showError("City must have at least 5 characters");
            return;
        }

        if(passwordField.getText().length() < 8)
        {
            Helpers.showError("Name must have at least 8 characters");
            return;
        }

        if(ageField.getText().length() == 0)
        {
            Helpers.showError("Age is a required field!");
            return;
        }
        //check if our boolean is true or false from Helpers class
        if(Helpers.ageCheck(ageField.getText()) == false)
        {
            Helpers.showError("Age must be a whole number!");
            return;
        }

        String fullname = fullnameField.getText();
        String username = usernameField.getText();
        String city = cityField.getText();
        String password = passwordField.getText();
        int age = Integer.parseInt(ageField.getText());
        String sex = " ";
        //check which radio button is selected
        if(maleOption.isSelected())
        {
            sex = "Male";
        }else
            {
                sex = "Female";
            }




            //we have to create a user now by having the above new vars in the user brackets in order of our Class constructor
        User myUser = new User(fullname,username, city, password, sex, age);

        //create the default add function for our arraylist that we added in the vars above
        myUsers.add(myUser);
        Helpers.showConfirmation("User added!");

    }

2 个答案:

答案 0 :(得分:0)

之后:

if(usernameField.getText().length() < 4)
    {
        Helpers.showError("Username must have at least 4 characters!");
        return;
    }

我会验证用户名是否使用以下代码

if(myUsers.size() > 0)
    {
       for(User user : myUsers)
          {
              if(usernameField.getText() == user.username)
                {
                    Helpers.showError("This username is taken");
                    return;
                }
          }
    }

答案 1 :(得分:0)

我假设myUser是类型myUser的ArrayList。您要覆盖myUser类中的equals方法,然后调用contains。查找如何@Override等于,但这是一个简短的演示。

public static void main(String[] args) {
    List<myUser> users = new ArrayList<>();

    users.add(new myUser("Billy", "xBillx"));

    List<myUser> usersToAdd = new ArrayList<>();
    usersToAdd.add(new myUser("Jill", "jilly"));
    usersToAdd.add(new myUser("Billy", "xBillx"));

    for(myUser newUser : usersToAdd){
        if(!users.contains(newUser)){
            users.add(newUser);
            System.out.println("New user added: " + newUser.fullname);
        } else {
            System.out.println("User already exists " + newUser.fullname);
        }
    }

}


static class myUser{
    final private String fullname;
    final private String username;
    myUser(String fullName, String username){
        this.fullname = fullName;
        this.username = username;
    }

    @Override
    public boolean equals(Object user){
        if(user == this){
            return true;
        }
        if(user instanceof myUser &&
                this.username.equals(((myUser) user).username) &&
                this.fullname.equals(((myUser) user).fullname)) {
            return true;
        }

        return false;
    }
}

它打印:

添加了新用户:Jill

用户已经存在Billy

编辑:犯了一个错误,您无法在Java中将字符串与==进行比较