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

Java自定义字符串删除方法执行异常,求助问题排查

Java字符串删除方法的问题排查与修复

核心问题分析

你的代码存在两个关键错误,直接导致了异常输出:

  • 错误使用Arrays.toString()转换字符数组:Arrays.toString(char[])的作用是生成数组的调试字符串(比如[a, b, c]),包含方括号、逗号和空格,并不是你需要的纯字符拼接字符串。但你在j_delete_char里直接返回这个结果,后续j_delete_all_chars处理时会把这些格式符号当成普通字符,最终导致嵌套的混乱输出。
  • j_delete_all_chars逻辑依赖错误中间结果:因为j_delete_char返回带格式的字符串,后续循环把它转成char数组时,会包含[、,、 这些无关字符,找删除目标的逻辑完全失效。

修复后的代码

修复j_delete_char方法

把Arrays.toString(ret_s_array)改成new String(ret_s_array),直接生成纯字符字符串,同时补充索引合法性判断:

import java.util.Arrays;

public static String j_delete_char(String s, int index) {
    if (index < 0 || index >= s.length()) {
        return s;
    }

    char[] s_array = s.toCharArray();
    char[] ret_s_array = new char[s.length() - 1];
    
    // 用System.arraycopy优化数组复制,比手动循环更高效
    System.arraycopy(s_array, 0, ret_s_array, 0, index);
    System.arraycopy(s_array, index + 1, ret_s_array, index, s.length() - index - 1);

    return new String(ret_s_array); // 关键修复:生成纯字符字符串
}

修复j_delete_all_chars方法

推荐用StringBuilder直接过滤目标字符,效率更高;如果坚持原循环删除的思路,也可以优化逻辑:

// 高效版:直接过滤目标字符
public static String j_delete_all_chars(String s, char to_del) {
    StringBuilder sb = new StringBuilder();
    for (char c : s.toCharArray()) {
        if (c != to_del) {
            sb.append(c);
        }
    }
    return sb.toString();
}

// 兼容原思路的修复版:循环删除目标字符
public static String j_delete_all_chars_v2(String s, char to_del) {
    String result = s;
    int index = result.indexOf(to_del);
    while (index != -1) {
        result = j_delete_char(result, index);
        index = result.indexOf(to_del);
    }
    return result;
}

测试验证

  • 调用j_delete_char("abcdef", 3)返回abcef,如果需要[a, b, c, e, f]格式,只需在结果上执行Arrays.toString(result.toCharArray())
  • 调用j_delete_all_chars("abcdef22abcd", '2')返回abcdefabcd,执行Arrays.toString(result.toCharArray())即可得到预期的[a, b, c, d, e, f, a, b, c, d]

额外建议

  • 字符串处理优先用StringBuilder,避免频繁创建字符串和数组带来的性能损耗
  • 索引判断要覆盖小于0的情况,防止数组越界异常
  • Arrays.toString()是调试工具,不要用来生成业务所需的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:04:53