我正在尝试使用多个User对象创建一个Bank程序,放入数组,最后我的方法是添加新用户无法正常工作。有人可以告诉我它有什么问题吗?
id是根据此特定User对象在数组中的位置分配的。
public void addUser(String u1, String p1) {
int i=0;
users[i] = new User(u1,p1,id);
users[i].setUsername(u1);
users[i].setPassword(p1);
users[i].setId(i);
println ("New user created");
i++;
}
答案 0 :(得分:1)
变量i
在方法内声明。每次调用该方法时,它都会再次以0
开始。因此,您尝试将每个用户添加到数组中的0
位置。
在方法之外声明变量(作为字段),这应该按预期工作。
e.g。
private int i = 0;
public void addUser(String u1, String p1)
{
users[i] = new User(u1, p1, id);
users[i].setUsername(u1);
users[i].setPassword(p1);
users[i].setId(i);
println("New user created");
i++;
}
答案 1 :(得分:0)
每次调用该方法时,“i”将重置为0.它只会设置用户[0]。
答案 2 :(得分:0)
如果我很清楚您的问题是什么,则代码中的问题是,当您致电addUser()
程序时,您始终会将新用户插入0
位置您的users
。
因此,我将建议两种不同的方法来解决您的问题:
1)使用全局变量:
// global variable:
int numberOfUsers = 0;
...
public void addUser(String u1, String p1) {
users[numberOfUsers] = new User(u1,p1,id);
users[numberOfUsers].setUsername(u1);
users[numberOfUsers].setPassword(p1);
users[numberOfUsers].setId(numberOfUsers);
println ("New user created");
numberOfUsers++;
}
2)将用户数传递给addUser()
函数:
// calling the function
newNumberOfUsers = addUser("string u1", "string p1", newNumberOfUsers);
...
public int addUser(String u1, String p1, int numberOfUsers) {
users[numberOfUsers] = new User(u1,p1,id);
users[numberOfUsers].setUsername(u1);
users[numberOfUsers].setPassword(p1);
users[numberOfUsers].setId(numberOfUsers);
println ("New user created");
return (numberOfUsers++);
}
答案 3 :(得分:-1)
" I" varible必须是全球性的。因为当你打电话给这个mehtod时,会重置你的" i"变量