如何在Java中使用链表显示斐波那契数
我使用链表创建了一个类来显示20个斐波那契数。这是我的密码:如何在Java中使用链表显示斐波那契数,java,linked-list,integer,Java,Linked List,Integer,我使用链表创建了一个类来显示20个斐波那契数。这是我的密码: import java.util.LinkedList; public class FibonacciLinkList { private LinkedList<Integer> fibonacciList; public FibonacciLinkList(LinkedList<Integer> FibonacciLinkList) { this.fibonacciList
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
}
}
import java.util.LinkedList;
公共类FibonacciLinkList{
私有链接列表fibonacciList;
公共FibonacciLinkList(链接列表FibonacciLinkList){
this.fibonacciList=FibonacciLinkList;
}
公共链接列表总和()
{
int n,a=0,b=0,c=1;
对于(int i=1;i我修复了您的代码:
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();
}
}
import java.util.LinkedList;
公共类FibonacciLinkList{
私有链接列表fibonacciList;
公共FibonacciLinkList(){
this.fibonacciList=newlinkedlist();
}
公共链接列表总和()
{
int n,a=0,b=0,c=1;
对于(int i=1;i,如我所述,LinkedList
不是FibonacciLinkedList
的实例,并且它不具有display()
方法。试图在LinkedList
对象上调用它将导致编译失败
sum()
我建议您使用LinkedList
类并在实例化时生成项。然后,使用默认的toString()可以显示到控制台。毕竟,该类只是LinkedList数据结构的扩展,用于存储最多20个斐波那契数
在扩展LinkedList
时,您将继承一个方法,该方法的“字符串表示法由集合元素列表按迭代器返回的顺序组成,并用方括号(“[]”)括起来。”
公共类FibonacciLinkedList扩展了LinkedList{
公共FibonacciLinkedList(int n){
int a=0,b=0,c=1;
对于(int i=1;i,您需要注意以下几点:
- 从不调用
sum()
sum()
中的查找不改变fibonacciList
,它只使用局部变量,不做任何其他操作
display()
不是LinkedList函数,因此它可能不起作用。即使它起作用,也可能不会显示您期望的内容:您需要循环列表并打印每个值
- 在main函数中创建了另一个
fibonacciList
,因此显示器(如果工作)将显示本地列表的内容,而不是全局列表的内容
提示:sum
中的循环实际上没有任何作用。您从具有特定值的局部变量开始,然后修改这些局部变量。您永远不会向列表中添加任何内容。因为fibonacciList不是FibonacciLinkedList。即使您扩展了LinkedList,也无法访问display()方法,因为它不属于LinkedList类。我建议单步执行调试器中的代码,以更好地了解程序实际在做/不在做什么。1)LinkedList
主要应该是FibonacciLinkList
。2)永远不会调用方法sum
。3)方法sum
从未添加到字段fibonacciList
。感谢您的反馈。这有助于更好地理解问题。
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();
}
}