如何在Java列表的相邻元素间插入二者之和?
解决整数列表交替插入相邻元素和的问题
需求说明:
将手动输入的任意长度整数列表(以输入0结束)转换为新列表,格式为原元素与相邻元素之和交替排列。例如输入序列3 2 4,输出应为3 5 2 6 4,其中5是3与2的和,6是2与4的和。
现有代码问题分析
你的代码存在两处核心问题:
- 未定义变量
i,导致list.add(i, number)出现语法错误 - 相邻元素求和的逻辑未实现,元素插入的顺序和位置不符合需求
修正后的代码
import java.util.LinkedList; import java.util.List; import java.util.Scanner; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<Integer> list = new LinkedList<>(); int number; while (true) { number = sc.nextInt(); if (number == 0) break; if (list.size() == 0) { // 第一个元素直接添加 list.add(number); } else { // 先计算最后一个元素与当前元素的和,添加到列表末尾 int last = list.get(list.size() - 1); int sum = last + number; list.add(sum); // 再添加当前元素 list.add(number); } } System.out.println("result:"); for (int n : list) { System.out.print(n + " "); } sc.close(); } }
关键逻辑解释
- 第一个元素处理:当列表为空时,直接将输入的第一个整数添加到列表中
- 后续元素处理:
- 获取列表的最后一个元素(即当前输入元素的前一个原元素)
- 计算两者的和,将和插入到列表末尾
- 再将当前输入的整数添加到列表末尾
- 终止条件:输入0时跳出循环,输出最终列表
运行示例
输入:3 2 4 0
执行流程:
- 输入3 → 列表变为
[3] - 输入2 → 计算3+2=5,添加后列表变为
[3,5],再添加2 →[3,5,2] - 输入4 → 计算2+4=6,添加后列表变为
[3,5,2,6],再添加4 →[3,5,2,6,4] - 输入0 → 终止循环,输出
result: 3 5 2 6 4
内容的提问来源于stack exchange,提问作者blueplanet
相关产品推荐
相关产品推荐

