Java新手求助:程序输出结果错误,如何获取目标格式输出?
问题分析与解决
嘿,我来帮你搞定这个问题!你现在的输出问题根源出在最后一个循环的逻辑上:
- 你写了
arr[i]+","+arr[i],这会把同一个元素重复拼接两次,自然就出现了[5,5]这种重复元素的输出 - 完全没有处理两两分组的逻辑,只是单纯逐个遍历输出每个元素
接下来我给你修正后的代码,同时拆解关键步骤帮你理解:
修正后的完整代码
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter Array Size:"); int arrSize = sc.nextInt(); System.out.println("The Size of your Array is " + arrSize); int arr[] = new int[arrSize]; System.out.println("Enter " + arrSize + " Elements of your Array: "); for (int i = 0; i < arr.length; i++) { arr[i] = sc.nextInt(); } // 打印原数组 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(" "); // 核心修正:倒序两两分组输出 int i = arr.length - 1; while (i >= 0) { if (i > 0) { // 还有下一个元素,输出两两一组 System.out.print(Arrays.asList(arr[i] + "," + arr[i-1]) + " "); i -= 2; } else { // 只剩最后一个元素,单独输出 System.out.print(Arrays.asList(String.valueOf(arr[i])) + " "); i--; } } } }
关键修正点解释
- 修复重复元素问题:把
arr[i]+","+arr[i]改成arr[i] + "," + arr[i-1],这样每次取当前元素和它的前一个元素组成一组,避免重复 - 添加分组逻辑:用
while循环从数组末尾开始遍历,每次向后跳2个元素:- 当
i > 0时,说明当前元素前面还有元素,输出[当前元素, 前一个元素]的格式 - 当
i == 0时,说明只剩这一个元素,单独输出[当前元素]
- 当
- 保持格式一致:继续用
Arrays.asList()来生成你想要的带方括号的输出格式
举个例子,如果你输入数组长度5,元素依次是1 2 3 4 5,运行后就会输出:
1 2 3 4 5 [5,4] [3] [2,1]
如果输入数组长度4,元素1 2 3 4,则输出:
1 2 3 4 [4,3] [2,1]
内容的提问来源于stack exchange,提问作者noobprogrammer
相关产品推荐
相关产品推荐

