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

Android Studio错误:java.lang.ArrayIndexOutOfBoundsException:长度=5;索引=5

谷永贞
2023-03-14

我的RecyclerView不工作。当我启动我的应用程序时,它就会崩溃,因为它无法形成recyclerview。不幸的是,我没有发现错误。也许你们中的一个能找到。有人能帮我解决这个问题吗?谢谢所有的答案:)。我使用下面的代码遇到了这个错误:

Error Code: java.lang.ArrayIndexOutOfBoundsException: length=5; index=5

ArrayList:

    public static ArrayList<HandySearchModel> getListData() {
        HandySearchModel handySearchModel;
        ArrayList<HandySearchModel> list = new ArrayList<>();

        for (String[] mData : data) {
            handySearchModel = new HandySearchModel();

            handySearchModel.setBrand(mData[0]);
            handySearchModel.setHandyName(mData[1]);
            handySearchModel.setPhoto(mData[2]);
            handySearchModel.setDisplay(mData[3]);
            handySearchModel.setDisplaySize(mData[4]);
            handySearchModel.setMainCamera(mData[5]);
            handySearchModel.setMaxResolution(mData[6]);
            handySearchModel.setRam(mData[7]);
            handySearchModel.setProcessor(mData[8]);
            handySearchModel.setBatteryCapacity(mData[9]);
            handySearchModel.setBatteryType(mData[10]);

            list.add(handySearchModel);
        }

        return list;
    }

型号:

    public class HandySearchModel implements Parcelable {

    // create implementation Parcelable to this class

    private String photo, brand, handyName, display, displaySize, mainCamera, maxResolution, ram, processor, batteryCapacity, batteryType;

    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getHandyName() {
        return handyName;
    }
    public void setHandyName(String handyName) {
        this.handyName = handyName;
    }

    public String getDisplay() {
        return display;
    }
    public void setDisplay(String display) {
        this.display = display;
    }

    public String getDisplaySize() {
        return displaySize;
    }
    public void setDisplaySize(String displaySize) {
        this.displaySize = displaySize;
    }

    public String getMainCamera() {
        return mainCamera;
    }
    public void setMainCamera(String mainCamera) {
        this.mainCamera = mainCamera;
    }

    public String getMaxResolution() {
        return maxResolution;
    }
    public void setMaxResolution(String maxResolution) {
        this.maxResolution = maxResolution;
    }

    public String getRam() {
        return ram;
    }
    public void setRam(String ram) {
        this.ram = ram;
    }

    public String getProcessor() {
        return processor;
    }
    public void setProcessor(String processor) {
        this.processor = processor;
    }

    public String getBatteryCapacity() {
        return batteryCapacity;
    }
    public void setBatteryCapacity(String batteryCapacity) {
        this.batteryCapacity = batteryCapacity;
    }

    public String getBatteryType() {
        return batteryType;
    }
    public void setBatteryType(String batteryType) {
        this.batteryType = batteryType;
    }

    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }


    public HandySearchModel() {
    }

    protected HandySearchModel(Parcel in) {


        photo = in.readString();
        brand = in.readString();
        handyName = in.readString();
        display = in.readString();
        displaySize = in.readString();
        mainCamera = in.readString();
        maxResolution = in.readString();
        ram = in.readString();
        processor = in.readString();
        batteryCapacity = in.readString();
        batteryType = in.readString();
    }

    public static final Creator<HandySearchModel> CREATOR = new Creator<HandySearchModel>() {
        @Override
        public HandySearchModel createFromParcel(Parcel in) {
            return new HandySearchModel(in);
        }

        @Override
        public HandySearchModel[] newArray(int size) {
            return new HandySearchModel[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {

        parcel.writeString(photo);
        parcel.writeString(brand);
        parcel.writeString(handyName);
        parcel.writeString(display);
        parcel.writeString(displaySize);
        parcel.writeString(mainCamera);
        parcel.writeString(maxResolution);
        parcel.writeString(ram);
        parcel.writeString(processor);
        parcel.writeString(batteryCapacity);
        parcel.writeString(batteryType);
    }
}

创建列表:

    private void createList() {
        list = new ArrayList<>();
        list.addAll(HandyData.getListData());
    }

共有1个答案

钮勇
2023-03-14

您的错误是告诉您正在尝试访问大小为5的数组中的索引号5。问题是,数组从零开始,因此对于您的5大小数组,可用的索引是0,1,2,3和4。该数组中不存在索引号5,因此您将获得异常(ArrayIndexOutOfBoundsException)。

直观地解释,这是您的数组:[pos_0][pos_1][pos_2][pos_3][pos_4]

您想要访问不存在的pos_5。

 类似资料:
  • 我正在尝试合并两个MP3文件到一个单一的MP3文件。文件保存在SD卡中,但无法播放。首先,我将MP3转换成存储在文件夹中的WAV文件,并输出到SD卡上。它还给出了。

  • 这个错误开始突然出现,当我登录到我的应用程序(通过firebase)时,它必须显示一个列表,然而,当登录时,它没有显示任何东西,并且这个错误开始在日志中出现几次 日志: 我看不到这个错误来自什么activity或片段,我只知道当我之后登录到我的列表时,它在列表中没有显示任何东西并且这些错误在日志中以一行的形式出现

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

  • 我正在努力创造这个游戏https://en.wikipedia.org/wiki/Conway然而,每当我尝试使用printBoard方法时,我都会遇到以下错误 线程“main”java中出现异常。lang.ArrayIndexOutOfBoundsException:索引5超出长度5的界限。 我怎样才能解决这个问题?谢谢

  • 我对编码很陌生,所以请耐心听我说,我只是在尝试洗牌数组的方法,以便最终在我Java创建的纸牌游戏中洗牌。我知道索引5超出了长度5的范围,但令我困惑的是错误并不总是会弹出。有时我试图运行我的代码,它工作得很好,有时我得到了错误,即使我在运行它的两次之间没有改变任何东西。 我不知道如何更改有缺陷的线条,欢迎提出任何建议!***我尝试过更改字符串中的字母数,但错误随之改变,即“索引6超出长度6的界限”

  • 问题内容: 我有一张这样的桌子: 和这样的一个: 和这样的SQL语句 如果我解释给我这个: 对于一百万行,这非常慢。我尝试使用以下方法在products.name上添加索引: 这给出了: 我认为Sub_part列显示已在索引中(以字节为单位)的前缀,如本页中所述。 当我重新解释查询时,我得到: 看起来好像没有使用新索引。如 本页所述,如果索引是前缀索引,则不会用于排序。实际上,如果我用以下方法截断

  • 我对编码还是个新手,所以请耐心听我说,我只是在尝试一些方法来洗牌一个数组,以便最终在我用Java创建的纸牌游戏中洗牌。我知道索引5超出了长度5的界限,但令我困惑的是错误并不总是弹出。有时我试着运行我的代码,它工作得很好,而另一些时候,即使我在运行代码期间没有更改任何内容,我也会出现错误。 我不知道如何改变有缺陷的线条,任何建议都欢迎!***我尝试更改字符串中的字母数,但错误随之改变,即“索引6 o