Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加元素时ArrayList抛出索引_Java_Arraylist - Fatal编程技术网

Java 添加元素时ArrayList抛出索引

Java 添加元素时ArrayList抛出索引,java,arraylist,Java,Arraylist,添加像ar1.add(0)这样的原始元素是可以的,但在尝试添加ar1时不会抛出错误。add(s)抛出错误 **错误不在ar数组中错误在ar1数组中,该数组在方法**中具有实例 这有什么解决办法吗? ` 包图; 导入java.util.*; 公共类PrintAllPathUsingDfs{ 静态数组列表arr[]; 公共静态void main(字符串[]args){ 扫描仪s=新的扫描仪(System.in); //int V=s.nextInt(); //int E=s.nextInt(); a

添加像ar1.add(0)这样的原始元素是可以的,但在尝试添加ar1时不会抛出错误。add(s)抛出错误
**错误不在ar数组中错误在ar1数组中,该数组在方法**中具有实例

这有什么解决办法吗?
`

包图;
导入java.util.*;
公共类PrintAllPathUsingDfs{
静态数组列表arr[];
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
//int V=s.nextInt();
//int E=s.nextInt();
arr=newarraylist[4];
//数组在java中不能是泛型的
对于(int i=0;i<4;i++)
{
arr[i]=新的ArrayList();
}
arr[0]。添加(1);
arr[0]。添加(2);
arr[0]。添加(3);
arr[2]。添加(0);
arr[2].增加(1);
arr[1].增加(3);
int src=2;
int d=3;
ArrayList ar=新的ArrayList();
打印所有路径(src、d、ar);
}
静态无效打印路径(ArrayList ar)
{

对于(inti=0;i您能发布完整的stacktrace吗?您如何调用上述方法


我的第一个猜测是,您的代码在执行
get
时抛出,而不是在调用
add
时抛出。错误可能发生在
ar.get(ar.size()-1)

在尝试获取元素之前,请检查
ar
size

如果大小为
0
,则会出现
outOfIndex

if(!ar.isEmpty() && d == ar.get(ar.size()-1)) {
  printpath(ar);
}
isEmpty
检查
ArrayList
是否为空表示
size
是否为
0


为避免
越界
异常,添加了
!(非)空
检查

您在异常行号处注释的概率是错误的。异常的大多数可能性是在if条件内的下一行- 因为这里您试图从一个数组列表中获取值,该数组列表传递一个大小为-1(即ar.size()-1)的索引。在第一次数组为空时,ar.size()返回0,此时ar.get(-1)将抛出一个异常e.iIndexOutOfBoundsException


注意:目标索引必须在0到列表大小的范围内(0由于代表性低而无法发表评论,但要添加,我相信当调用
add()
函数作为ArrayList自动保持其容量时,ArrayList不会抛出
越界异常
(这是ArrayList流行的原因之一)

您也可以随时调用
ensureCapacity(int minCapacity)
,以确保ArrayList具有足够的空间,minCapacity是您所需的空插槽数。但这也不是必需的


如果在这里发布不是一个好的做法,我将删除它。

来自doc:
IndexOutOfBoundsException-如果索引超出范围(index<0 | | index>size())
@KunLun这段javadoc是用于get方法的,而不是用于add。我怀疑上面的代码是否在带有注释的那一行引发了异常。最有可能的是在那之后的那一行,确实是在get上。@burm87@KunLun但不是add函数,而是这一个:我认为@burm87是正确的。哦,我的糟糕。很抱歉,这应该是正确的这可能只是一个评论,因为它是在询问信息,猜测并不是真正的答案
if(!ar.isEmpty() && d == ar.get(ar.size()-1)) {
  printpath(ar);
}
if(ar.size()>0 && d==ar.get(ar.size()-1)){
        // process
}
if(!ar.isEmpty() && d==ar.get(ar.size()-1)){
        // process
}