【问题标题】:Android ArrayIndexOutOfBoundsException: length=2; index=2Android ArrayIndexOutOfBoundsException: length=2;指数=2
【发布时间】:2016-01-10 11:29:52
【问题描述】:

名单:private List<EventRect> mEventRects; 此列表包含记录 event.getIdOperatore() == 1event.getIdOperatore() == 3 我收到此错误:

 java.lang.ArrayIndexOutOfBoundsException: length=2; index=2

代码:

int [] o = {1,3};
private void drawEvents(float startFromPixel, Canvas canvas) {
    if (mEventRects != null && mEventRects.size() > 0) {
        for (int i = 0; i < mEventRects.size(); i++) {
            if(mEventRects.get(i).event.getIdOperatore() == o[i]){
                Log.d("mEventRects",
                mEventRects.get(i).event.getIdOperatore() + 
                " idOperatore " + o[i]);
...
...
}

【问题讨论】:

    标签: android arrays loops for-loop


    【解决方案1】:

    看起来像mEventRects.size() != o.length

    如果你确定它们是相等的,那么试试这样:

    for (int i = 0; i<mEventRects.size() && i<o.length; < i++) {
    

    【讨论】:

    • 我确定,都是一样的,但是好像只读取了第一条记录,也就是只有mEventRects﹕1 idOperatore 1
    【解决方案2】:

    您的 int 数组 int[] o 只有两个元素。因此,在您的 for() 循环中,如果您的迭代器大于 1,您将得到异常。因此,要使此代码正常工作,您的 mEventRects.size() 需要为 2 或更低。

    不要将 1 和 3 存储在 int 数组中,只需在 for() 循环中显式测试它们即可。所以不要这样:

    if(mEventRects.get(i).event.getIdOperatore() == o[i])
    

    你会想要这样做:

    if(mEventRects.get(i).event.getIdOperatore() == 1)
    

    或者...

    if(mEventRects.get(i).event.getIdOperatore() == 3)
    

    【讨论】:

      猜你喜欢
      • 2015-04-07
      • 2020-10-14
      • 2021-04-16
      • 2015-10-27
      • 2016-11-15
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多