[英]Index out of bounds exception in homework
我正在尝试做作业。 我必须使用动态编程来显示下一个要移动的人是否处于赢/输状态。 我不需要实际问题的帮助,我需要索引超出范围的异常的帮助,我对此感到困惑。 我只将部分代码粘贴到这里,因为我只需要查看for循环。 我也不想让班上的任何人看到我所有的代码并复制它们。 如果您需要更多数据,请告诉我。 所以这是代码:
if(primeArray[x] == true){
for(int i = 1; i <= x; i++){
if(primeArray[i]== true){
newRowNumber = x - i;
}
if(dynaProgram[newRowNumber][columnNumber] < minimum){
minimum = dynaProgram[newRowNumber][columnNumber];
}
}
}
//COMPOSITE CASE FOR X!
else{
for(int k = 1; k <= x; k++){
if((primeArray[k] == false)){
newRowNumber = x - k;
}
if(dynaProgram[newRowNumber][columnNumber] < minimum){
minimum = dynaProgram[newRowNumber][columnNumber];
}
}
由于某些原因, if(primeArray[i] == true
可以正确运行,但是我在if(primeArray[k] == false
上获取索引超出范围的异常。这两者之间的唯一区别是使用了变量k我在for循环中(for循环是相同的)我没有在代码中的任何其他地方使用任何变量。我不知道为什么这会在一个而不是另一个中发生。在两种情况下,x保持相同的数字。
我还在第二个minimum = dynaProgram[newRowNumber][columnNumber]
上获得了索引超出范围的异常,而第一个没有遇到错误。 我知道这可能是一个愚蠢的错误,但我无法弄清楚。 如果我将' if(primeArray[k] == false
循环更改为k < x
,则if(primeArray[k] == false
行消失了,但是那是不正确的(第二个minimum = dynaProgram[newRowNumber][columnNumber]
不会消失。)
所有这些代码都在嵌套的for循环中,该循环遍历表中的行和列以填充它们。如果我删除了上面的代码,只是将dynaProgram[rowNumber][columnNumber] = 1
放了dynaProgram[rowNumber][columnNumber] = 1
,所以我不认为这是问题所在。
访问长度为5的数组时(例如)
int[] fred = new int[5];
第一个元素为fred[0]
,最后一个元素为fred[4]
所以当做这样的事情:
if(primeArray[i]== true){
确保i
小于数组长度。 使用等于数组长度的i
值将引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.