[英]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.