Java 索引越界异常

Java 索引越界异常,java,debugging,exception,indexoutofboundsexception,Java,Debugging,Exception,Indexoutofboundsexception,因此,错误消息如下: 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 FcfsSched

因此,错误消息如下:

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<Request> r)
{
    int pointer = 0;
    int sProof = 0;
    while(true)
    {
        if(r.get(pointer).getArrivalTime()<r.get(pointer+1).getArrivalTime())
        {
            Request r1 = r.get(pointer);
            Request r2 = r.get(pointer+1);
            r.set(pointer, r2);
            r.set(pointer+1, r1);
        }
        else
        {
            sProof++;
        }
        ++pointer;
        if(pointer>r.size()-2)
        {
            pointer=0;
            sProof=0;
        }
        if(sProof>=r.size()-2)
        {
            break;
        }
    }
}
public void排序器(列表r)
{
int指针=0;
int sProof=0;
while(true)
{
if(r.get(指针).getArrivalTime()r.size()-2)
{
指针=0;
sProof=0;
}
如果(sProof>=r.size()-2)
{
打破
}
}
}
错误在

if(r.get(pointer).getArrivalTime()<r.get(pointer+1).getArrivalTime())
if(r.get(指针).getArrivalTime()
java.lang.IndexOutOfBoundsException:索引:0,大小: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;
if(r.size()==0)&&r.size()
您正在传入一个空数组。您应该对输入进行一些验证

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

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

显示此错误是因为您的
ArrayList
为空。!!尝试使用调试器调试您的代码,您可以准确地获得错误发生的位置和方式。您应该在while DECELERATION中对照r的大小检查指针+1以避免此错误。另外,检查r是否不为null且不为空可能是一个好主意。您输入的列表为空可能与