gpt4 book ai didi

java - 创建对象时出现 IndexOutOfBoundsException (Java)

转载 作者:行者123 更新时间:2023-12-01 17:16:16 27 4
gpt4 key购买 nike

我正在制作一个问答游戏,它将从文本文件中读取许多问题及其各自的答案。这些首先被放入一个 ArrayList 中,然后每个问题将被转换为一个单独的问题对象。正是在程序的这一部分中,我收到了 IndexOutOfBoundsException。

文本文件的格式如下:

Question
Correct Answer
Wrong Answer1
Wrong Answer2
Wrong Answer3
(emptyline)
Question2
...
...
...

文本文件在名为 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)类单问题{ 私有(private)字符串问题; 私有(private)字符串正确答案; 私有(private)字符串答案2; 私有(private)字符串答案3; 私有(private)字符串答案4;

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)

最佳答案

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 - 创建对象时出现 IndexOutOfBoundsException (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com