我必须找到一种方法来确定数据类型 long 在出现位溢出之前将保留斐波那契序列的多少次迭代。我不断收到错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at Fibonacci.main(Fibonacci.java:15).
我尝试增加数组的长度,我尝试使用 arraylist 数据类型(由于无知和不理解我对它的研究,我又回到了空数组),并且我已经尝试不使用数组,但后来被告知我必须这样做。) 这是我的代码,我确实有一行将计数器减一。我在尝试调试代码时将其撕掉。我非常感谢任何/所有帮助。
import javax.swing.JOptionPane;
public class Fibonacci {
public static void main(String[] args) {
long[] f = new long[9000];
int k = 1;
f[0] = 0;
f[1] = 1;
while (f[k] > 0) {
f[k] = f[k - 1] + f[k - 2];
k++;
}
System.out.println("The number of Fibonacci numbers a computer can compute with the data type long is " + k);
System.out.println(k + "th Fibonacci number is " + f[k]);
}
}
最佳答案
while (f[k] > 0) {
f[k] = f[k - 1] + f[k - 2];
k++;
}
如果k == 1
,您尝试访问f[0]
和f[-1]
,这显然不会存在,因为数组索引从 0
开始,而不是 -1
。
你应该使用
while (f[k] > 1) {
f[k] = f[k - 1] + f[k - 2];
k++;
}
关于java - 线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : -1 at Fibonacci. main(Fibonacci.java:15),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562981/