尝试多次更改for循环条件,当我将零作为参数传递时仍然得到ArrayIndexOutOfBounds。每个其他数字工作正常,我试图通过设置它自动等于零来解释零,我做错了吗?除零之外,所有内容都编译并运行良好。
private static int iterativeCalculation(int userEntry)
{
int iterativeArray[] = new int[userEntry + 1];
iterativeArray[0] = 0;
iterativeArray[1] = 1;
for (int i = 2; i <= userEntry; i++)
{
iterativeArray[i] = (3 * iterativeArray[i - 1]) - (2 * iterativeArray[i - 2]);
iterativeEfficiencyCounter++;
}
return iterativeArray[userEntry];
}
public static void main(String[] args) {
System.out.println(iterativeCalculation(0));
}
尝试通过代码调试我的方式,仍然不了解出了什么问题。非常感谢任何帮助!谢谢!
答案 0 :(得分:3)
当您将零作为参数传递时,userEntry + 1
= 1。
但是在这里:
iterativeArray[1] = 1;
您正在尝试设置第二个元素的值。请记住,length
数组比实际大小少一个。所以删除这一行将解决它。或者使用userEntry + 2
代替并相应地改变你的循环。
修改强>
如果你真的想修复第一个和第二个元素,那么请改用它:
int iterativeArray[] = new int[userEntry + 2];
iterativeArray[0] = 0;
iterativeArray[1] = 1;
这将创建一个足够大小的数组。
请记住,length
您输入[...]
时创建数组必须比您想要的实际长度多一个。因为实际数组从0开始计数。
在您的情况下,您将长度设置为1(最小)。这将创建一个只能存储一个元素的数组;那是iterativeArray[0] = //something
。高于OutOfBounds
的任何内容。
答案 1 :(得分:0)
无论数组中是否有2个或更多项目,您都在设置iterativeArray[1] = 1;
。这将与一个元素不符。
答案 2 :(得分:0)
我认为您应该在调试器中单步执行代码以最好地了解问题所在。如果单步执行代码,您将确切地看到它出现问题的确切位置。这是一项基本技术和工具。