如何使用Java中的链接列表显示斐波那契数字

时间:2018-01-05 11:28:51

标签: java linked-list integer

我使用链表创建了一个类来显示20个Fibonacci数。这是我的代码:

import java.util.LinkedList;

public class FibonacciLinkList {
    private LinkedList<Integer> fibonacciList;

    public FibonacciLinkList(LinkedList<Integer> FibonacciLinkList) {
        this.fibonacciList = FibonacciLinkList;
    }

    public LinkedList<Integer> sum()
    {
        int n, a = 0, b = 0, c = 1;

        for(int i = 1; i <= 20; i++)
        {
            a = b;
            b = c;
            c = a + b;
        }
        return fibonacciList;
    }

    public void display() {
        System.out.println(fibonacciList);  
    }

    public static void main(String[] args) {
        LinkedList fibonacciList = new LinkedList();
        fibonacciList.display();  //This is where the error is
    }
}

我遇到的问题是在控制台上显示斐波那契数字。

我试图通过使用显示方法来做到这一点,但它并没有真正起作用。我已经在网上和SO上做了很多搜索,并尝试过但是他们没有为我工作。如果您能修复我的代码以便它确实有效,我们将不胜感激。

我是链接列表的新手,这是我第一次自己编写链接列表,我觉得这个问题的解决方案可以帮助我更好地理解链接列表。

3 个答案:

答案 0 :(得分:1)

我修复了你的代码:

import java.util.LinkedList;

public class FibonacciLinkList {
    private LinkedList<Integer> fibonacciList;

    public FibonacciLinkList() {
        this.fibonacciList = new LinkedList<Integer>();
    }

    public LinkedList<Integer> sum()
    {
        int n, a = 0, b = 0, c = 1;

        for(int i = 1; i <= 20; i++)
        {
            fibonacciList.add(a);
            a = b;
            b = c;
            c = a + b;
        }
        return fibonacciList;
    }

    public void display() {
        System.out.println(fibonacciList);  
    }

    public static void main(String[] args) {
        FibonacciLinkList fibonacciList = new FibonacciLinkList();
        fibonacciList.sum();
        fibonacciList.display();
    }
}

试试这个。

答案 1 :(得分:1)

正如我所提到的,display()不是LinkedList的实例,并且它不具备sum()方法。试图在LinkedList对象上调用它将导致编译失败。

不调用LinkedList方法,也不实际任何事情。也就是说,它没有为你拥有的fibonacciList指定任何东西。

我建议您#onAttach(android.content.Context) public class FibonacciLinkedList extends LinkedList<Integer> { public FibonacciLinkedList(int n){ int a = 0, b = 0, c = 1; for(int i = 1; i <= n; i++) { a = b; b = c; c = a + b; this.add(c); } } public void display() { System.out.println(this.toString()); } public static void main(String[] args) { FibonacciLinkedList list = new FibonacciLinkedList(20); list.display(); } } 类,并在实例化时生成项目。然后,使用默认的toString()可以显示到控制台。毕竟,该类只是LinkedList数据结构的扩展,用于存储最多20个Fibonacci数。

当你扩展ws:outbound-gateway时,你继承了extend方法,其中&#34;字符串表示由一个集合的元素列表按照它们返回的顺序排列迭代器,用方括号括起来(&#34; []&#34;)。&#34;

org.springframework.integration.handler.LoggingHandler - ErrorMessage [payload=org.springframework.messaging.MessagingException: Failed to invoke handler; nested exception is org.springframework.ws.client.WebServiceIOException: I/O error: Received fatal alert: handshake_failure; nested exception is javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure,...

答案 2 :(得分:1)

您需要注意以下几点:

  • sum()永远不会被召唤。
  • sum()中的外观不会更改fibonacciList,它只使用局部变量而不会对其进行任何其他操作。
  • display()不是LinkedList函数,因此它可能不起作用。即使它正在工作,它也可能无法显示您的期望:您需要遍历列表并打印每个值。
  • 在main函数中创建了另一个fibonacciList,因此显示(如果它正在工作)将显示此本地列表的内容而不是全局列表的内容。