java - 添加元素时ArrayList抛出outOfIndex
问题描述
添加像 ar1.add(0) 这样的原始元素是可以的,不会抛出错误,但是当尝试添加 ar1.add(s) 时会抛出错误
**错误不在 ar 数组中,错误在 ar1 数组中,该数组中有实例方法 **
有什么解决方法吗?
`
package graph;
import java.util.*;
public class PrintAllPathUsingDfs {
static ArrayList<Integer> arr[];
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// int V =s.nextInt();
// int E =s.nextInt();
arr = new ArrayList[4];
//arrays cant be generic in java
for(int i =0 ; i< 4;i++)
{
arr[i]=new ArrayList<Integer>();
}
arr[0].add(1);
arr[0].add(2);
arr[0].add(3);
arr[2].add(0);
arr[2].add(1);
arr[1].add(3);
int src = 2;
int d =3;
ArrayList<Integer> ar=new ArrayList<Integer>();
printAllPaths(src, d,ar);
}
static void printpath(ArrayList<Integer> ar)
{
for(int i = 0; i<ar.size();i++)
{
System.out.print(ar.get(i)+" ");
}
System.out.println();
}
static void printAllPaths(int s , int d,ArrayList<Integer> ar)
{
Iterator<Integer> it = arr[s].listIterator();
ArrayList<Integer> ar1=new ArrayList<>();
// for(int i=0;i<ar.size();i++)
// {
// ar1.add(ar.get(i));
// }
ar1.add(0);// this adds works
ar1.add(s);// but this is not working throw error
if(d==ar.get(ar.size()-1))
{
printpath(ar);
}
while(it.hasNext())
{
printAllPaths(it.next(),d,ar);
}
}
}
`
解决方案
错误可能发生在ar.get(ar.size()-1)
ar
在尝试获取元素之前检查大小。
如果大小为0
,outOfIndex
则将发生。
if(!ar.isEmpty() && d == ar.get(ar.size()-1)) {
printpath(ar);
}
isEmpty
检查是否ArrayList
为空意味着size
是0
与否。
为避免out of bound
异常,添加了!(not)Empty
检查
推荐阅读
- reactjs - TypeError:无法读取未定义的属性“isAuthenticated”
- loops - Stata:使用 foreach 生成变量
- sql - 具有最新记录的 Oracle 查询 GROUP BY
- snowflake-cloud-data-platform - 如何在雪花中删除所有任务
- sql - 如何编写 SQL 查询以确定点是否在框中?
- c# - 无法将 ServerEventMessage 从 ServiceStack 解析到 C#
- javascript - 反应网格布局。网格项值的动态更新
- nginx - Flask CORS 在生产中不能与 Nginx 一起工作,但在没有 Nginx 的情况下在本地工作
- java - 比较java中二叉搜索树中节点的两个值
- scala - 当我的案例类上有 Option[Instant] 属性时,我的 JSON 读取未编译