【问题标题】:Storing element into array but having array index update after in Java将元素存储到数组中,但在 Java 之后更新数组索引
【发布时间】:2023-03-31 00:14:01
【问题描述】:

我对 java 还很陌生,所以我只是在练习我学到的一些东西,并一直在玩制作一个存储客户帐户等的银行程序。这是我有一个名为 " 的数组的开始。帐户”类型的客户,这是我创建的一个类,它在用户名、密码和帐号中使用 3 个参数。

我想让该数组以这种方式存储所有客户,正如您从方法“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; 
    }

【问题讨论】:

  • 为什么不使用ArrayList 而不是Array?所以你不必担心数组的容量。
  • 我知道这是一种可能性,但是使用数组是否无法以某种方式编写它,所以当我下次添加另一个元素时,它会将其添加到下一个索引而不是重写第一个索引?即使我最终使用 ArrayList,我仍然想学习这个
  • 您可以添加一个实例变量并将其初始化为零,每次调用addAcc 时将其加一。

标签: java arrays element


【解决方案1】:

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

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; 
}

【讨论】:

  • 好的,但是这个计数器什么时候上升?每次我调用此方法添加新成员时,使用“counter++”它会增加 1 吗?
  • 是的,第一次调用它时,它会将客户存储在 0 索引处,存储在 0 索引处后,它将递增 1,下次添加时,它将存储在索引 1 处,然后将增加 1 使其值 2
【解决方案2】:

更好的解决方案是使用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; 
    }
}

【讨论】:

    【解决方案3】:

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

    例如

    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; 
        }
    

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多