You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java方法内修改整数数组:removeOdd方法实现求助

问题分析与修复方案

你的代码有两个核心问题导致输出不符合预期:

  1. 遍历范围错误:第二个循环用i < evenCount作为终止条件,这会导致你只遍历原数组的前evenCount个元素,而非题目要求的前size个元素,会漏掉后面的偶数。
  2. 数组引用赋值无效:Java中数组作为参数传递时,方法内的values是原数组引用的副本,执行values = newValues只是修改了方法内局部变量的引用,不会改变main方法里原数组的内容,所以main方法仍会输出原数组的前sizeAfter个元素。

正确的实现方式是在原数组内部原地修改,把偶数元素移动到数组的前半部分,不需要新建数组。具体代码如下:

int index = 0;
for (int i = 0; i < size; i++) {
    if (values[i] % 2 == 0) {
        values[index] = values[i];
        index++;
    }
}
return index;

代码逻辑说明

  • 用index变量记录当前要存放偶数的位置,初始为0。
  • 遍历原数组的前size个元素,每遇到一个偶数,就把它放到values[index]的位置,然后index自增。
  • 遍历结束后,index的值就是剩余偶数的数量,直接返回即可。原数组的前index个元素就是所有的偶数,main方法遍历前sizeAfter个元素时就能得到正确结果。

测试这个实现后,第一个测试用例的数组a会被修改为[22, 98, 46, 82, 24, 53, 82, 24, 11, 19],main方法只输出前5个元素,符合预期;第二个测试用例的前7个元素都是奇数,index保持0,输出空数组,也符合预期。

内容的提问来源于stack exchange,提问作者KayBirdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:50:28