Java实现removeEvens方法及修复数组输出格式问题
修复数组输出格式问题
问题出在printArray方法的输出逻辑上:原代码给每个元素都追加了, ,导致最后一个元素末尾多了冗余逗号,同时也没添加示例要求的首尾方括号。可以通过以下方式修改printArray方法:
public static void printArray(int[] arr){ if (arr.length == 0) { System.out.println("[]"); return; } // 打印左方括号 System.out.print("["); int n = arr.length; // 遍历前n-1个元素,每个元素后追加", " for (int i = 0; i < n - 1; i++){ System.out.print(arr[i] + ", "); } // 单独打印最后一个元素,避免末尾冗余符号 System.out.print(arr[n - 1]); // 打印右方括号并换行 System.out.println("]"); }
修复逻辑说明
- 先处理空数组的边界情况,直接输出
[] - 开头先打印左方括号
[,保证格式匹配示例 - 循环只给前
n-1个元素追加,,避免最后一个元素后出现多余的逗号和空格 - 单独打印最后一个元素,再补上右方括号
],完成标准格式输出
修改后的完整代码
import java.util.Arrays; public class LabProgram { public static void printArray(int[] arr){ if (arr.length == 0) { System.out.println("[]"); return; } System.out.print("["); int n = arr.length; for (int i = 0; i < n - 1; i++){ System.out.print(arr[i] + ", "); } System.out.print(arr[n - 1]); System.out.println("]"); } public static int[] removeEven(int[] arr){ int oddCount = 0; for (int i = 0; i < arr.length; i ++){ if (arr[i] % 2 != 0){ oddCount++; } } int[] result = new int [oddCount]; int idx = 0; for (int i = 0; i < arr.length; i++){ if(arr[i] % 2 != 0){ result[idx] = arr[i]; idx++; } } return result; } public static void main(String[] args){ // 测试示例输入[1,9,3] int[] arr = {1, 9, 3}; int[] result = removeEven(arr); printArray(result); } }
运行这段代码后,输入数组[1,9,3]时,输出会完全符合要求:[1, 9, 3]
内容的提问来源于stack exchange,提问作者venuslenus
相关产品推荐
相关产品推荐

