如何实现:以控制台输入数为前两项在ArrayList中生成斐波那契数列?
解决斐波那契数列存入ArrayList的问题
没问题,我来帮你搞定这个需求!咱们一步步理清楚逻辑,再给出可运行的代码实现:
核心需求回顾
- 从控制台获取一个数字,将它作为ArrayList的前两个元素(比如输入1,前两个元素就是
1和1) - 后续每个元素 = 前两个元素之和(标准斐波那契数列的生成规则)
- 最后打印整个ArrayList
完整代码实现(Java)
import java.util.ArrayList; import java.util.Scanner; public class FibonacciArrayList { public static void main(String[] args) { // 1. 获取用户输入的起始数字 Scanner scanner = new Scanner(System.in); System.out.print("请输入一个数字作为数列的起始元素:"); int startNum = scanner.nextInt(); // 2. 让用户指定数列总长度(也可以固定为某个数值,比如10) System.out.print("请输入要生成的数列总长度(至少2):"); int totalLength = scanner.nextInt(); // 处理长度小于2的异常情况,避免逻辑错误 if (totalLength < 2) { System.out.println("数列长度至少为2,已自动设置为2"); totalLength = 2; } // 3. 初始化ArrayList并添加前两个元素 ArrayList<Integer> fibList = new ArrayList<>(); fibList.add(startNum); fibList.add(startNum); // 4. 生成后续的斐波那契元素 for (int i = 2; i < totalLength; i++) { // 获取列表中当前位置的前两个元素 int prev1 = fibList.get(i - 1); int prev2 = fibList.get(i - 2); // 计算下一个元素并添加到列表中 int nextElement = prev1 + prev2; fibList.add(nextElement); } // 5. 打印最终的ArrayList System.out.println("生成的斐波那契数列:"); System.out.println(fibList); scanner.close(); } }
关键注意点(你之前可能踩坑的地方)
- 手动添加前两个元素:别指望循环自动生成初始元素,一定要先调用
add()把起始数字加入列表两次 - 循环起始索引要正确:因为前两个元素已经在列表里了,循环要从索引
2开始(对应第三个元素) - 正确获取前两个元素:用
get(i-1)和get(i-2)分别取当前位置的前两个元素,别搞反顺序 - 不要忘记添加新元素:计算出下一个元素后,必须调用
add(nextElement)把它存入ArrayList,不然列表不会更新
示例运行效果
如果输入起始数字1,总长度10,输出会是:
生成的斐波那契数列: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
内容的提问来源于stack exchange,提问作者Георги Иванов
相关产品推荐
相关产品推荐

