簡體   English   中英

為什么我得到錯誤?

[英]Why I am getting the error?

 import java.util.*;
public class Nostalgia {
    static ArrayList<Integer> arr = new ArrayList<Integer>(5);
    static int array[] ={6,3,6,2,3};
    //static int num;
public static void main(String args[]){
    Scanner s = new Scanner(System.in);

    arr.set(0, 8);
    arr.set(1, 4);
    arr.set(3, 6);
    arr.set(2, 9);
    arr.set(4, 7);
    arr.set(5, 1);


    System.out.print(3+" :"+arr.get(3));

}
}

我收到此錯誤。

線程“主”中的異常java.lang.IndexOutOfBoundsException:索引:1,大小:0

在java.util.ArrayList.rangeCheck(未知源)在Nostalgia.main(Nostalgia.java:9)處java.util.ArrayList.set(未知源)

我正在嘗試在列表中放入一些值,並在某個索引處顯示一個值。

問題是您要在一個空列表上調用SET(x,y),而set這樣

用指定元素替換此列表中指定位置的元素

但是set方法實際上是一個替換操作... Java如何替換不存在的元素。

而不是在空列表中設置元素:

arr.set(0, 8);
arr.set(1, 4);
arr.set(3, 6);

您應該將它們添加到列表中

arr.add(0, 8);
arr.add(1, 4);

但是請注意 ,您不能添加超出列表實際大小的元素!

ArrayList初始化為空列表(除非您使用采用Source Collection的構造函數)。 new ArrayList<Integer>(5)不會創建5個元素的列表,它會創建一個初始容量為5的空列表(這意味着初始支持數組的長度為5)。

僅當您嘗試更新值的索引已經具有先前值時, set才起作用。

因此,您應該使用add 而且您不必提供要add的索引。

暫無
暫無

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

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