我有这个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!");
}
答案 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中将字符串与==进行比较