为什么抛出IndexOutOfBoundsException

blu*_*sky 0 blackberry java-me

下面的代码在Field F = getField(counter)行抛出一个IndexOutOfBoundsException; 它为什么被抛出?当然,该字段存在是因为我正在基于fieldcount进行循环.或者管理员中的列表字段是否不是连续的?如果是这种情况,我应该如何从屏幕中删除类型为MyButtonField的字段

谢谢

        int fieldCount = getFieldCount() - 1;
        if(fieldCount > 1){
            for(int counter = 0; counter <= fieldCount ; ++counter){
                Field f = getField(counter);
                if(f instanceof MyButtonField){                 
                    delete(f);  
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

您没有指定什么delete(f),但如果它从字段列表中删除它,那么您的"有效计数"将有效减少.

要稍微重写一下解决问题:

for (int index = getFieldCount() - 1; index >= 0; index--){
    Field f = getField(index);
    if (f instanceof MyButtonField) {
        delete(f);  
    }
}
Run Code Online (Sandbox Code Playgroud)

这将从字段的末尾而不是从开头开始,所以如果你删除一个条目并且一切都洗牌都没关系 - 洗牌的项目将是你已经看过的项目.