索引超出异常java [英] index out of bounds exception java

查看:379
本文介绍了索引超出异常java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以错误信息是这样的:

 线程main中的异常java.lang.IndexOutOfBoundsException:Index:0,大小:0 
在java.util.ArrayList.rangeCheck(未知源)
在java.util.ArrayList.get(未知来源)
在FcfsScheduler.sortArrival(FcfsScheduler.java:77) (fffsScheduler.java:30)
在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())
{
请求r1 = r.get(pointer);
请求r2 = r.get(pointer + 1);
r.set(pointer,r2);
r.set(pointer + 1,r1);
}
else
{
sProof ++;
}
++指针;
if(pointer> r.size() - 2)
{
pointer = 0;
sProof = 0;
}
if(sProof> = r.size() - 2)
{
break;
}
}
}

错误在

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



但是我认为数组索引在指针增量后用代码检查好了。它是一个数组超出边界的异常还是别的什么?通常情况下,ArrayIndexOutOfBoundsException是数组时的错误。这是什么问题?

解决方案


java.lang.IndexOutOfBoundsException:Index:0,大小:0


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

 索引:0,大小:0. 

你正在尝试访问它。所以你得到 IndexOutOfBoundsException

  if(r.size()== 0)&& r.size()指针+ 1)//如果ArrayList大小为零,那么只需从方法返回。 
return;


So the error message is this:

    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)

with my code as

    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;
        }
    }
}

the error is at

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

but I think the Array index is checked ok with the code after the increment of pointer. Is it an array out of bounds exception or something else? Normally, the error is ArrayIndexOutOfBoundsException when it is the array. What seems to be the problem here?

解决方案

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

ArrayList is empty. It does not contain any element.

Index: 0, Size: 0.

You are trying to access it.So you are getting IndexOutOfBoundsException.

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

这篇关于索引超出异常java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆