那麼錯誤信息是這樣的:索引越界異常的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。這裏似乎是什麼問題?
由於您的'ArrayList'爲空,因此顯示此錯誤。 – 2013-03-17 15:41:33
嘗試使用調試器來調試您的代碼,您可以準確獲知發生錯誤的位置和方式。 – 2013-03-17 15:41:34
你應該在decleration時檢查指針+ 1的大小以避免這個錯誤。另外,檢查r是否爲空並且不爲空可能是一個好主意。 – Oren 2013-03-17 15:45:43