
本文讲解 Java 中如何避免打印数组中未使用的空元素,通过 Arrays.copyOf() 截取实际有效部分并以字符串形式输出,适用于初学者掌握数组边界控制与简洁格式化技巧。
本文讲解 java 中如何避免打印数组中未使用的空元素,通过 `arrays.copyof()` 截取实际有效部分并以字符串形式输出,适用于初学者掌握数组边界控制与简洁格式化技巧。
在 Java 中,当我们预先声明一个较大容量的数组(如 newPassArray = new int[scores.length])来动态收集满足条件的元素时,数组末尾会残留默认值 0。若直接调用 Arrays.toString(newPassArray),输出将包含所有占位零值(例如 [100, 50, 40, 70, 90, 0, 0, 0]),这显然不符合业务需求——我们只希望展示真正“通过”(≥60 分)的成绩。
正确做法是:仅截取已填充的有效部分。Java 提供了 Arrays.copyOf(int[] original, int newLength) 方法,它能创建一个指定长度的新数组,并复制原数组前 newLength 个元素。结合你在循环中维护的 passingIndex(即实际通过人数),即可精准提取结果:
// 替换原代码中的这行:
// System.out.println("PASS grade: " + Arrays.toString(newPassArray));
// 改为:
System.out.println("PASS grade: " + Arrays.toString(Arrays.copyOf(newPassArray, passingIndex)));✅ 输出效果示例(基于输入 {100, 50, 40, 70, 90}):PASS grade: [100, 70, 90]
⚠️ 注意事项:
-
passingIndex必须在遍历后、打印前保持准确(你当前逻辑已正确维护,无需修改); -
Arrays.copyOf()返回新数组,不修改原数组,安全且语义清晰; - 不依赖
Stream或ArrayList,完全符合题目约束,也利于理解底层数组机制; - 若需进一步美化输出(如换行、带序号),可配合传统
for循环实现,但Arrays.toString()已提供最简、标准、可读性强的格式。
总结:掌握 Arrays.copyOf() 是处理“动态填充固定数组”场景的关键技巧,它桥接了数组的静态特性与逻辑上的动态需求,是 Java 初学者进阶过程中值得牢记的实用工具方法。



















