我需要打开一个代码,打印出也使用动态数组的Fibonacci系列,这是我到目前为止所做的,我只是不知道如何将它变成动态数组。
public class Fibonacci {
public static void main(String[] args) {
int[] numbers;
numbers = new int[20];
numbers[0] = 1;
numbers[1] = 1;
System.out.println("\nFibonacci series:\n");
System.out.println(numbers[0]);
System.out.println(numbers[1]);
for (int i = 2; i < 20; i++) {
numbers[i] = numbers[i-2]+numbers[i-1];
System.out.println(numbers[i]);
}
}
}
答案 0 :(得分:1)
ArrayList类扩展了AbstractList并实现了List接口。
ArrayList支持可以根据需要增长的动态数组。
标准Java数组具有固定长度。创建数组后,它们无法增长或缩小,这意味着您必须事先知道数组将包含多少元素。
使用初始大小创建数组列表。超过此尺寸时,将自动放大该集合。移除对象后,阵列可能会缩小。
它有三个构造函数:
ArrayList( )
ArrayList(Collection c)
ArrayList(int capacity)
除此之外,从父类继承的方法太多了。
示例程序和输出:
import java.util.*;
public class ArrayListDemo {
public static void main(String args[]) {
// create an array list
ArrayList al = new ArrayList();
System.out.println("Initial size of al: " + al.size());
// add elements to the array list
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
al.add(1, "A2");
System.out.println("Size of al after additions: " + al.size());
// display the array list
System.out.println("Contents of al: " + al);
// Remove elements from the array list
al.remove("F");
al.remove(2);
System.out.println("Size of al after deletions: " + al.size());
System.out.println("Contents of al: " + al);
}
}
输出:
Initial size of al: 0
Size of al after additions: 7
Contents of al: [C, A2, A, E, B, D, F]
Size of al after deletions: 5
Contents of al: [C, A2, E, B, D]
另请阅读:
Java Dynamic arrays
答案 1 :(得分:0)
您可以做的一件事是要求用户输入他/她想要的斐波纳契数的值,将其存储在变量中并给出 numbers = new int [n]; 这样你就可以用这种方式实现动态数组。
答案 2 :(得分:0)
动态数组是可以增大的数组,例如ArrayList或向量。经常使用ArrayList。
这是您的问题的解决方案
import java.util.*;
public class fibo{
public static void main()
{
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(0);
a.add(1);
insertoneelement(a);
System.out.println(a.toString());
}
public static void insertoneelement(ArrayList<Integer> x)
{x.add((x.get(x.size()-2)+x.get(x.size()-1)));}
}
使你的循环遍历main()中的insertoneelement(a)所需的多少额外元素,分别形成初始0和1。
ArrayList的索引类似于数组的索引,索引第一个元素是0,最后一个是数组的长度 - 1. size()方法返回ArrayList中的元素数。
答案 3 :(得分:0)
以下是手动动态数组的示例:
public static void main(String[] args) {
// Fibnocci begins with 0, 1
int[] fibNumbers = new int[] {0, 1};
// Set your condition of how many numbers you want to create, 20 in my case.
// This is also limited to the max value of an integer
while (fibNumbers.length < 20) {
// Create a new array for the next number in the sequence
int[] newFibNumbers = new int[fibNumbers.length + 1];
// Copy the cotents from your original array to this new array
System.arraycopy(fibNumbers, 0, newFibNumbers, 0, fibNumbers.length);
// Calculate the last element which is equal to the sum of the previous two elements
newFibNumbers[newFibNumbers.length - 1] = newFibNumbers[newFibNumbers.length - 2] + newFibNumbers[newFibNumbers.length - 3];
// Set the new array to the original array
fibNumbers = newFibNumbers;
}
// Print your fibonacci series
for (int i = 0; i < fibNumbers.length; i++) {
System.out.println(fibNumbers[i]);
}
}
结果: