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

Java删除数组中等于指定值元素时运行结果异常问题排查

问题原因

你的代码存在3个核心问题,直接导致输出不符合预期:

  • 外层for循环结构不完整,缺少循环变量步进语句i++,循环执行时i的递增逻辑完全错误,导致元素匹配、移动逻辑混乱。
  • 声明的count变量没有实际作用,你原本应该用它记录删除元素的数量,当前写的count--逻辑完全错误。
  • Java数组是定长结构,你将匹配元素后的所有元素前移后,数组尾部的冗余旧值不会自动消失,直接遍历整个数组输出就会打印出多余的尾部元素。
修复代码

原逻辑直接修复

补全循环结构,修正计数逻辑,输出时截断尾部冗余元素即可:

int removeCount = 0;
// 补全for循环的i++步进语句
for(int i=0; i < stringArr.length; i++){
    if(stringArr[i].equals(value)){
        removeCount++;
        for(int j= i; j < stringArr.length-1; j++){
            stringArr[j] = stringArr[j+1];
        }
        i--;
    }
}
// 只输出前length - removeCount个有效元素
for (int i = 0; i < stringArr.length - removeCount; i++) {
    System.out.print(stringArr[i] + " ");
}

更高效的双指针实现(时间复杂度O(n),无需嵌套循环)

推荐用这种写法,性能更好,逻辑也更清晰:

// slow指针记录有效元素的存放位置
int slow = 0;
for(int fast = 0; fast < stringArr.length; fast++){
    if(!stringArr[fast].equals(value)){
        stringArr[slow] = stringArr[fast];
        slow++;
    }
}
// 输出前slow个有效元素
for (int i = 0; i < slow; i++) {
    System.out.print(stringArr[i] + " ");
}

运行以上任意一种修复后的代码,示例输入的输出结果都是hello bye ,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:06:00