Java中如何将输入序列元素按每两个一组组成有序对?
解决方案
要实现每两个相邻元素组成有序对的需求,核心是按步长2遍历列表,每次取当前索引和下一个索引的元素配对,具体代码如下:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class RelationPair { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String relation = scanner.nextLine(); scanner.close(); List<String> rel = Arrays.asList(relation.split(" ")); List<String> pairs = new ArrayList<>(); // 步长为2遍历,确保每次取i和i+1组成一对 for (int i = 0; i < rel.size(); i += 2) { // 防止输入奇数个元素时出现索引越界 if (i + 1 < rel.size()) { pairs.add("(" + rel.get(i) + ", " + rel.get(i + 1) + ")"); } } String formattedResult = String.join(", ", pairs); System.out.println("RELATION: { " + formattedResult + " }"); } }
你之前代码的问题分析
第一个代码片段
直接用String.join拼接所有元素,只是把空格替换成逗号,完全没有做分组处理,自然无法生成有序对结构。
第二个代码片段
循环逻辑存在错误:
- 循环条件
i < rel.size()/2会让i从0遍历到size/2 -1,比如输入6个元素时,i会取0、1、2 - 每次取
i和i+1,会得到(0,1)、(1,2)、(2,3)这样的连续配对,而非你需要的(0,1)、(2,3)、(4,5)分组配对 - 正确的遍历方式应该是让
i每次增加2,跳过已经配对过的元素
内容的提问来源于stack exchange,提问作者mint
相关产品推荐
相关产品推荐

