Java数组方法筛选奇数时输出多余零值的问题如何解决
问题根因
你当前代码输出多余0的核心问题是初始创建的数组长度和原数组一致,筛选完奇数后剩余的空位被你主动赋值为0,所以最终输出会携带多余的0值,且第一段遍历逻辑只是完整复制原数组,没有实际筛选作用,属于冗余代码。
另外注意判断奇数不要用%2 == 1,Java中负数取模结果为负,比如-3%2的结果是-1,该判断逻辑会漏掉负奇数。
修复后完整代码
import java.util.Arrays; public class Odd { public int[] removeEvens(int [] nums) { // 先统计奇数的总数量 int oddCount = 0; for (int num : nums) { if (num % 2 != 0) { oddCount++; } } // 按照奇数数量创建对应长度的新数组,避免多余空位 int[] newArray = new int[oddCount]; int curIndex = 0; // 遍历原数组把奇数存入新数组 for (int num : nums) { if (num % 2 != 0) { newArray[curIndex++] = num; } } return newArray; } public static void main(String[] args) { Odd labObject = new Odd(); int [] input = {1,2,3,4,5,6,7,8,9}; int [] result = labObject.removeEvens(input); System.out.println(Arrays.toString(result)); // 输出[1, 3, 5, 7, 9] } }
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

