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));
}
}
我收到此错误。
线程中的异常&#34; main&#34; java.lang.IndexOutOfBoundsException:Index:1,Size:0
at java.util.ArrayList.rangeCheck(Unknown Source) at java.util.ArrayList.set(Unknown Source) 在Nostalgia.main(Nostalgia.java:9)
我试图在我的列表中放置一些值并在某个索引处显示一个值。
答案 0 :(得分:2)
问题是你在空列表上调用SET(x,y),并设置为this:
用此替换此列表中指定位置的元素 指定元素
但是set方法实际上是替换操作...... java如何替换不存在的元素..
而不是在空列表中设置元素:
destSlice
你应该将它们添加到列表中
append
但要小心,你不能添加超出列表实际大小的元素!
答案 1 :(得分:2)
ArrayList
被初始化为空列表(除非您使用带有源Collection
的构造函数)。 new ArrayList<Integer>(5)
不会创建包含5个元素的列表,它会创建一个初始容量为5的空列表(这意味着初始后备数组的长度为5)。
set
仅在您尝试更新值的索引已经具有以前的值时才有效。
因此您应该使用add
。而且您不必为add
提供索引。