簡體   English   中英

Java - arraylist 越界?

[英]Java - arraylist out of bounds?

我不知道這里出了什么問題。 據我了解,它應該工作:

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 is out of bounds for size 0。

交易被定義為

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

這將是放入事務中的第一個元素(例如,當從演示中調用該方法時,在此之前的事務中沒有任何內容)

演示代碼的相關部分是

        testBank.deposit(1000, 150.25);

其中第一個數字是要存入的帳號,第二個數字是要存入的金額。

當你執行new ArrayList<>(100)時,你實際上並沒有創建一個包含 100 個元素的 List,100 只是底層數組的初始容量。

您可能希望使用帶有索引的add()方法作為參數來確保您的列表實際上有那么多元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM