Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wierd错误,其中链表的size方法没有返回正确的响应,Java,Euler#2_Java_Linked List - Fatal编程技术网

Wierd错误,其中链表的size方法没有返回正确的响应,Java,Euler#2

Wierd错误,其中链表的size方法没有返回正确的响应,Java,Euler#2,java,linked-list,Java,Linked List,我的程序给了我一个索引越界异常,它想要索引4,并且由于某种原因,在循环的一个早期迭代中大小为1 我意识到我可以使用不同的数据结构,但这让我疯狂地试图确定它为什么不起作用 调试语句的打印输出为3,3 package euler2; import java.util.LinkedList; public class Euler2 { public static void main(String[] args) { LinkedList fibNumbers = new L

我的程序给了我一个索引越界异常,它想要索引4,并且由于某种原因,在循环的一个早期迭代中大小为1

我意识到我可以使用不同的数据结构,但这让我疯狂地试图确定它为什么不起作用

调试语句的打印输出为3,3

package euler2;
import java.util.LinkedList;

public class Euler2 {

    public static void main(String[] args) {
        LinkedList fibNumbers = new LinkedList<>();
        fibNumbers.add(0,1);
        fibNumbers.add(1,2);
        System.out.println(fibNumbers.size() + (int) fibNumbers.indexOf(fibNumbers.getLast()));
        while ((int) fibNumbers.getLast() < 4000000) {
            System.out.println(fibNumbers.size() + (int) fibNumbers.indexOf(fibNumbers.getLast()));
            fibNumbers.addLast(fibNumbers.get((int)(fibNumbers.size()) + (int) fibNumbers.get(fibNumbers.size() - 1)));
        }

        fibNumbers.removeLast();

        int sum = 0;

        for (int x = 0; x < fibNumbers.size(); x++) {
            sum = sum + (int) fibNumbers.get(x);
        }

        System.out.println(sum);
    }
}
包euler2;
导入java.util.LinkedList;
公共类Euler2{
公共静态void main(字符串[]args){
LinkedList fibNumbers=新建LinkedList();
加上(0,1);
增加(1,2);
System.out.println(fibNumbers.size()+(int)fibNumbers.indexOf(fibNumbers.getLast());
而((int)fibNumbers.getLast()<4000000){
System.out.println(fibNumbers.size()+(int)fibNumbers.indexOf(fibNumbers.getLast());
fibNumbers.addLast(fibNumbers.get((int)(fibNumbers.size())+(int)fibNumbers.get(fibNumbers.size()-1));
}
fibNumbers.removeLast();
整数和=0;
对于(int x=0;x
循环中addLast行的逻辑不正确。如果您将方法调用分解为变量并检查它们,您应该知道原因。