当前位置: 首页 > 知识库问答 >
问题:

索引出界例外Java[副本]

乐正浩宕
2023-03-14

因此错误消息如下:

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())

但我认为数组索引在指针递增后用代码检查ok。是数组越界异常还是其他什么?通常,如果是数组,则错误为ArrayIndexOutOfBoundsException。这里的问题似乎是什么?

共有2个答案

梁丘翔
2023-03-14

您正在传入一个空数组。您应该对输入进行一些验证

if (r == null || r.size()==0){
   throw new RuntimeException("Invalid ArrayList");
}
楚嘉
2023-03-14

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;
 类似资料:
  • 我是Java的新手,正在运行下面的代码,它运行得很好,但是我得到了一个数组索引超出了界限的异常。有人能帮我理解一下为什么我会得到这个例外吗?

  • 我的代码抛出了一个错误“字符串索引超出界限:1”,下面是代码: 分配指令是:“彩票程序生成一个介于01-99之间的两位数。如果用户以正确的顺序猜对了数字,他们将赢得1000美元。如果用户以错误的顺序猜对了数字,例如16而不是61,他们将赢得500美元。如果用户猜对了其中一个数字,他们将赢得100美元。” 当用户输入和/或randomNum为10或以上时,代码工作正常。然而,当它低于10时,发生错误

  • 上面的代码是用来在数组中插入一个元素的。我尝试将数组的长度更改为9,但问题仍然存在。

  • 问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥

  • 这是我的代码: 该程序的目的是要求用户输入一个字符串,然后统计字符串中每个字符的使用次数。 当我去编译程序时,它工作正常。当我运行程序时,我可以在弹出框中输入字符串,但是在我提交字符串并按确定后,我得到一个错误,说 我不完全确定问题是什么或如何解决。