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

创建对象时的IndexOutOfBoundsException(Java)

柯翔
2023-03-14

我正在做一个问答游戏,它将从一个文本文件中阅读一些问题和它们各自的答案。这些问题首先被放入一个ArrayList,然后每个问题都要被转换成一个单独的问题对象。正是在程序的这一部分中,我接收到一个IndexOutOfBoundsException。

文本文件的格式如下:

问题
正确答案
错误答案1
错误答案2
错误答案3
(空行)
问题2
...
...
...

文本文件在名为IO的类中使用BufferedReader处理。问题存储在ArrayList>中,因此每个问题都是单独存储的。在一个名为questions的类中,我有一个用于从ArrayList创建对象的方法。

代码如下所示:

public class Questions
{

private ArrayList<ArrayList<String>> originalList;
private ArrayList<SingleQuestion> newList;
private ArrayList<SingleQuestion> objectList;
private IO io;



public Questions(){
    io = new IO();  //Creates a new instance of IO.
    objectList = new ArrayList<SingleQuestion>();
    createQuestions();
}

public void createQuestions(){

    originalList = io.getArray();

    for(int i = 0; i < originalList.size(); i++)
    {
        objectList.add(new SingleQuestion(originalList.get(i)));
    }

}

SingleQuestion类构造函数如下所示:public class SingleQuestion{private String Question;private String CorretAnswer;private String Answer2;private String Answer3;private String

public SingleQuestion(ArrayList<String> questionArray){

    this.question = questionArray.get(0);
    this.correctAnswer = questionArray.get(1);
    this.answer2 = questionArray.get(3);
    this.answer3 = questionArray.get(4);
    this.answer4 = questionArray.get(5);
}

当代码到达SingleQuestions构造函数的末尾时,我得到一个IndexOutOfBoundsException。

错误消息如下所示:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
 at java.util.ArrayList.rangeCheck(Unknown Source)
 at java.util.ArrayList.get(Unknown Source)
 at MVC_test.SingleQuestion.<init>(SingleQuestion.java:21)
 at MVC_test.Questions.createQuestions(Questions.java:47)
 at MVC_test.Questions.<init>(Questions.java:20)
 at MVC_test.GModel.<init>(GModel.java:23)
 at MVC_test.GMain.main(GMain.java:7)

共有1个答案

柳珂
2023-03-14
this.question = questionArray.get(0);
this.correctAnswer = questionArray.get(1);
this.answer2 = questionArray.get(3);
this.answer3 = questionArray.get(4);
this.answer4 = questionArray.get(5);

应该是

this.question = questionArray.get(0);
this.correctAnswer = questionArray.get(1);
this.answer2 = questionArray.get(2);
this.answer3 = questionArray.get(3);
this.answer4 = questionArray.get(4);
 类似资料:
  • 主要内容:显式创建对象,隐含创建对象对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。 Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new 关键字创建对象 这是常用的创建对象的方法,语法格式如下: 2. 调用 java.lang.Class 或者 ja

  • JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。 当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回undefined。 例如,创建一个Array对象: var arr = [1, 2, 3]; 其

  • 7.2.2 对象的创建 一旦定义了类,就可以创建类的实例,也就是该类的一个对象②。类是抽象的,而对象 则是具体的,就好比“人”是抽象概念,而“张三”是个具体的人。一个类可以创建任意多 个实例(对象),所有实例都具有相同的行为(这是由类中定义的方法决定的),但各自的数 据值可以不同。创建类的实例采用如下形式: <变量> = <类名>(<参数>) 这里将类名当成一个函数来用,称为类的构造器(cons

  • 问题内容: 如何使用Google Gson创建json对象?以下代码创建一个看起来像的json对象 如何创建像这样的jSon对象? 问题答案: 弄清楚了如何使用Java对象正确执行此操作。 Creator java类的实现。

  • 问题内容: 我正在尝试学习python,现在我试图摆脱类的困扰,以及如何使用实例操作它们。 我似乎无法理解这个练习问题: 创建并返回其名称,年龄和专业与输入的对象相同的学生对象 我只是不明白对象的含义,是否意味着我应该在包含这些值的函数内创建一个数组?或创建一个类,然后将该函数放入其中并分配实例?(在问这个问题之前,我被要求开设一个学生班,里面要写姓名,年龄和专业) 问题答案: 请注意,即使Pyt

  • 当我创建GET响应时,出现了Stackoveflow错误 应答控制器 他用AjaxResponseBody类作为答案 当这个控制器工作时,我捕捉到 我是如何理解这种情况的,因为模型用户和模型项目彼此有链接。模型用户有一个可选字段“监视的项目”。 并且模型项目具有字段,而不是empriy字段“author”: 我怎么能放弃它?还是其他方式?