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

字符串数组去重循环逻辑异常,请求排查问题

字符串数组去重代码的问题分析与修复

代码存在的核心问题

  • 空字符串处理逻辑错误:当前把空字符串的判断嵌套在和数组元素相等的条件里,无法直接跳过空字符串,反而会因为内层循环的break逻辑导致异常流程;正确逻辑应该是先判断当前元素是否为空,为空则直接跳过后续操作。
  • 内层循环重复判断逻辑错误:现在只要当前元素和arr中的某一个元素不相等,就立刻执行arr.add(mas[i]),这会导致同一个不重复元素被多次添加到arr中。比如当arr已有多个元素时,当前元素和第一个元素不相等就添加,和第二个元素不相等又会再次添加,最终arr中出现重复的目标元素。

修复后的代码

// 处理原数组为空的边界情况
if (mas.length == 0) {
    return;
}

// 初始化动态数组,仅添加第一个非空元素
if (!mas[0].equals("")) {
    arr.add(mas[0]);
}

for (int i = 1; i < mas.length; i++) {
    // 直接跳过空字符串
    if (mas[i].equals("")) {
        continue;
    }
    boolean isDuplicate = false;
    // 遍历动态数组,确认是否存在重复
    for (int j = 0; j < arr.size(); j++) {
        if (mas[i].equals(arr.get(j))) {
            isDuplicate = true;
            break;
        }
    }
    // 确认无重复后再添加
    if (!isDuplicate) {
        arr.add(mas[i]);
    }
}

// 输出去重后的结果
for (int j = 0; j < arr.size(); j++) {
    System.out.print(arr.get(j) + ";");
}

修复说明

  1. 增加边界处理:判断原数组是否为空,避免索引越界异常。
  2. 调整空字符串判断时机:在进入重复检查前直接跳过空字符串,不将其加入动态数组。
  3. 引入重复标记位:通过isDuplicate变量记录当前元素是否在动态数组中存在,只有遍历完所有动态数组元素确认无重复后,才执行添加操作,彻底避免重复添加问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:02:16