java - 线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : -1 at Fibonacci. main(Fibonacci.java:15)

标签 java arrays types

我必须找到一种方法来确定数据类型 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/

相关文章:

python - 如何将数组写入 .txt 文件,然后用相同的 .txt 文件填充数组?

scala - Scala 的 "type"关键字是什么意思?

解构赋值中的 typescript 松散打字

python - 我如何知道要使用什么类型的浮子?

java - 如何检测 MediaRecorder 是否被另一个应用程序使用?

java - HQL : Named Parameter not found even if it exist

java - Java和C之间的浮点类型有什么区别吗?

java - Struts 1.x Action 类 ThreadSafe?

objective-c - 使用 for..in 逐行读取文件

javascript - 使用JS获取数组内对象的索引