用Java在数组中添加对象

时间:2016-10-03 18:29:05

标签: java arrays object

我正在尝试使用多个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++;
}

4 个答案:

答案 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"变量