Java-arraylist越界越好?

问题描述

我不知道这里出了什么问题。据我了解,它应该可以工作:

public void deposit(int accNum,double balance)
    {
        for (int i = 0; i < numAccounts; i++)
        {
            if (accNum == accounts[i].getAccNum())
            {
                accounts[i].deposit(balance);
                Transaction temp = new Transaction(accNum,1,balance,CurrentDateTime());
                if (this.transactions.size() <= 100)
                {
                    this.transactions.set(1,temp);
                }
                else
                {
                    this.transactions.remove(100);
                    this.transactions.set(1,temp);     //remove oldest
                    System.out.println("Please note that your oldest transaction has been overwritten.");
                }
            }
            else
            {
                System.out.println("No such account on record.");
            }
        }
    }

出现以下错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
    at java.base/java.util.Objects.checkIndex(Objects.java:373)
    at java.base/java.util.ArrayList.set(ArrayList.java:441)
    at Bank.deposit(Bank.java:145)         //in reference to this snippet,specifically at this.transactions.set(i,temp);
    at BankDemo1.main(BankDemo1.java:11)

Process finished with exit code 1

我尝试将事务的大小更改为其他数字,但是我总是得到0超出了大小0的范围。

交易定义为

private ArrayList<Transaction> transactions = new ArrayList<Transaction>(100);

这是交易中的第一个元素(例如,从演示中调用该方法之前,交易中没有任何内容)

演示中代码的相关部分是

        testBank.deposit(1000,150.25);

其中第一个是要存入的帐号,第二个是要存入的金额。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)