web-dev-qa-db-ja.com

範囲外のインデックス例外java

したがって、エラーメッセージは次のとおりです。

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

エラーはにあります

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

しかし、配列インデックスは、ポインタのインクリメント後のコードで問題なくチェックされていると思います。配列の範囲外の例外か何か他のものですか?通常、配列の場合、エラーはArrayIndexOutOfBoundsExceptionです。ここで何が問題になっているようですか?

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;
5
Ajay S

空の配列を渡しています。入力に対していくつかの検証を行う必要があります

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

配列サイズは0です。反復するには、正しく初期化する必要があります。

0
mkazma