Android 字符串数组随机化ArrayIndexOutOfBoundsException(已编辑) 需要帮助,伙计们。我在代码中添加了random方法,现在我得到了这个错误。 这是我在youtube上看到的全部代码
代码是关于问题的随机化,您将键入正确答案。尝试以下操作:Android 字符串数组随机化ArrayIndexOutOfBoundsException(已编辑) 需要帮助,伙计们。我在代码中添加了random方法,现在我得到了这个错误。 这是我在youtube上看到的全部代码,android,arrays,string,indexoutofboundsexception,Android,Arrays,String,Indexoutofboundsexception,代码是关于问题的随机化,您将键入正确答案。尝试以下操作: questions[random.nextInt(questions.length-1)]; 其思想是数组位置从0开始。所以你的quesrion数组的值在0到9之间 您传递的总长度为10,超出了最后一个位置,即9。尝试删除answers数组末尾的逗号“,” answers = new String[]{"A1","A2","A3","A4","A5","A6","A7","A8","A9","10",}; 作为 问题是您初始化了cur
questions[random.nextInt(questions.length-1)];
其思想是数组位置从0开始。所以你的quesrion数组的值在0到9之间
您传递的总长度为10,超出了最后一个位置,即9。尝试删除answers数组末尾的逗号“,”
answers = new String[]{"A1","A2","A3","A4","A5","A6","A7","A8","A9","10",};
作为
问题是您初始化了
currentQuestion=-1代码>。因此,如果您第一次单击答案按钮,而没有单击前面的问题按钮,它将执行:
public boolean isCorrect(String answer) {
return (answer.equalsIgnoreCase(answers[-1]));
}
因此出现了索引自动边界异常
String randString=questions[random.nextInt(questions.length)]代码>
由于randString
被声明为一个成员变量,因此在创建类的对象时这是赋值,此赋值依赖于questions
,它在init()
中初始化,在对象创建后将调用此init()
。这就是为什么您会得到ArrayIndexOutOfBoundException
,因为您试图在初始化问题之前访问它
流量:
对象被创建
成员已初始化
2.a)randString
是赋值,但这需要问题
2.b)现在,查询问题
2.c)只能找到问题的声明<代码>问题
不是指任何值
2.d)现在questions[random.nextInt(questions.length)]
正在尝试访问某个索引的值(random int),但是question
到目前为止没有任何内容
这是引发异常的点。
解决方案
如果randString
是某个初始化参数,则执行以下操作
init(){
// some code
questions = new String[]{"Q1?","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"};
String randString = questions[random.nextInt(questions.length)];
// some code
}
MainActivity.java中的第97行是什么?在字符串中,randString=questions[random.nextInt(questions.length)];line random.nextInt(questions.length)生成的数字大于数组的大小-1。修复这个问题,就不会出现错误。发布isCorrect
method code这个字符串randString=questions[random.nextInt(questions.length)]的事实如何;在init()中声明问题之前声明。可以吗?请发布isCorrect
方法。这是引发异常的一个。也不要在评论中发布,编辑并更新你的问题。谢谢nextInt(max)
从0
和max-1
返回一个数字,两者都包括在内length-1
将出错,因为它将返回范围0-8
no@AmulyaKhare。它将返回10作为总长度。所以10-1=9questions.length=10questions.length-1=9nextInt(questions.length-1)=nextInt(9)
=>输出来自0-8
阅读文档:我会试试这个家伙。我将在进行更改时解决此nullpointerexception新错误。谢谢,但它没有解决问题。很抱歉我刚刚更新了我的代码,现在我得到了nullpointerexception。它解决了arrayindexoutofboundsexception,谢谢。现在randString变成了“未使用”,并且有黄色摇摆的下划线,这个问题不是随机的。谢谢你的回答,先生@GauravGupta@Jan如果答案对你有帮助,请接受。你能帮我如何随机选择吗?@Jan请详细描述问题,或者过来聊天进行详细讨论。问题是我需要随机生成问题,同时它可以检查正确答案。我们在哪里可以聊天?
answers = new String[]{"A1","A2","A3","A4","A5","A6","A7","A8","A9","10"};
public boolean isCorrect(String answer) {
return (answer.equalsIgnoreCase(answers[-1]));
}
init(){
// some code
questions = new String[]{"Q1?","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"};
String randString = questions[random.nextInt(questions.length)];
// some code
}