索引越界exceptionjava

所以错误信息是这样的:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at FcfsScheduler.sortArrival(FcfsScheduler.java:77) at FcfsScheduler.computeSchedule(FcfsScheduler.java:30) at ScheduleDisks.main(ScheduleDisks.java:33) 

用我的代码作为

  public void sortArrival(List r) { int pointer = 0; int sProof = 0; while(true) { if(r.get(pointer).getArrivalTime()r.size()-2) { pointer=0; sProof=0; } if(sProof>=r.size()-2) { break; } } } 

错误发生在

if(r.get(pointer).getArrivalTime()<r.get(pointer+1).getArrivalTime())

但我认为在指针增加后,使用代码检查数组索引是否正常。 它是一个超出范围的数组exception还是别的什么? 通常,当它是数组时,错误是ArrayIndexOutOfBoundsException。 这里似乎有什么问题?

java.lang.IndexOutOfBoundsException:Index:0,Size:0

ArrayList为空。 它不包含任何元素。

 Index: 0, Size: 0. 

您正在尝试访问它。因此您将获得IndexOutOfBoundsException

 if(r.size() == 0) && r.size() < pointer + 1) //If ArrayList size is zero then simply return from method. return; 

你传入一个空数组。 您应该对输入进行一些validation

 if (r == null || r.size()==0){ throw new RuntimeException("Invalid ArrayList"); } 

您的数组大小为0,您应该正确初始化它以便迭代它。