将元素存储到数组中但在Java之后使用数组索引更新

时间:2015-12-15 06:22:47

标签: java arrays element

我对java很陌生,所以我只是练习了一些我学过的东西,并且正在制作一个存储客户账户等的银行计划。这是我的第一步一个名为" accounts"类型为Customer的类型,我在该类中创建了3个用户名,密码和帐号的args。

我想让这个数组以这种方式存储所有客户,正如您可以从方法" addAcc"中看到的那样。在这里,我将新的客户对象添加到客户类型数组中作为第一个元素,但我不确定如何在NEXT数组索引处添加下一个客户,如何在下次调用此方法时更新索引添加其他用户?或者还有另一种方法可以解决这个问题吗?

public class Bank {
        private double interest_rate = 1.01; // interest rate 
        private Customer[] accounts = new Customer[1000]; // array to store accounts

    // adds new customer 
    public void addAcc (String user, String pass, int accNum) {
        Customer accID = new Customer(user,pass,accNum);
        this.accounts[0] = accID; 
    }

3 个答案:

答案 0 :(得分:2)

只需创建一个计数器变量,它将跟踪已添加的客户数量

public class Bank {
    private double interest_rate = 1.01; // interest rate 
    private Customer[] accounts = new Customer[1000]; // array to store accounts
    private int counter=0;

// adds new customer 
public void addAcc (String user, String pass, int accNum) {
    Customer accID = new Customer(user,pass,accNum);
    this.accounts[counter++] = accID; 
}

答案 1 :(得分:1)

更好的解决方案是使用ArrayList

public class Bank {
    private double interest_rate = 1.01;
    private List<Customer> accounts = new ArrayList<>();

    public void addAcc (String user, String pass, int accNum) {
        Customer accID = new Customer(user, pass, accNum);
        this.accounts.add(accID); 
    }
}

此解决方案也更安全,因为数组列表会根据需要动态调整自身大小。使用阵列的第一个解决方案,当达到阵列的容量时会出现错误。

作为记录,作为一个劣等的替代方案,你可以保持计数:

public class Bank {
    private double interest_rate = 1.01; // interest rate 
    private Customer[] accounts = new Customer[1000]; // array to store accounts
    private lastIndex = -1;

    // adds new customer 
    public void addAcc (String user, String pass, int accNum) {
        Customer accID = new Customer(user,pass,accNum);
        this.accounts[++lastIndex] = accID; 
    }
}

答案 2 :(得分:0)

最好使用Collection而不是数组。可能是一个ArrayList 但是,如果您仍然喜欢使用数组并继续,那么您必须检查下一个数组元素是什么,并将新对象添加到该数组元素。为此,您可以每次都浏览数组,或者在添加帐户时使用索引并更新该索引

e.g。

public class Bank {
        private static nextIndex = 0;
        private double interest_rate = 1.01; // interest rate 
        private Customer[] accounts = new Customer[1000]; // array to store accounts

    // adds new customer 
    public void addAcc (String user, String pass, int accNum) {
        Customer accID = new Customer(user,pass,accNum);
        this.accounts[nextIndex++] = accID; 
    }