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

C#将文本框逗号分隔输入值解析为int[]数组的问题排查

问题根因

你当前代码运行时string[]无数据的核心原因和未设置数量上限无关,是基础代码逻辑存在错误:

  • 方法名不匹配:你定义的文本框查找方法名为DU_58827_FindTextBox,但数组构建逻辑中调用的是FindTextBox,如果没有额外定义同名方法,这里会直接抛出运行时异常,根本无法获取到目标文本框实例,自然读不到用户输入的内容。
  • 分割逻辑鲁棒性不足:直接调用Split未传空条目过滤参数,遇到用户输入首尾逗号、连续逗号的场景会生成空字符串条目,后续int.Parse遇到空字符串会直接抛出转换异常中断执行。
  • 缺少输入校验逻辑:既没有对输入内容的合法性做校验,也没有对数字输入数量做上限约束,既容易出现转换异常,也可能因为输入数字过多导致后续冒泡排序(时间复杂度O(n²))执行卡顿。
修复方案

以下是修复后可直接使用的代码,已包含数量上限控制、异常校验、兼容常规输入习惯的处理:

// 统一文本框查找方法,增加控件存在性校验,避免索引越界
private TextBox FindTextBox(string displayName)
{
    Control[] foundControls = this.Controls.Find(displayName, true);
    if (foundControls.Length == 0 || foundControls[0] is not TextBox targetBox)
    {
        throw new ArgumentException($"未找到名为{displayName}的文本框控件");
    }
    return targetBox;
}

// 按业务需求调整允许输入的最大数字数量,示例值设为100
private const int MaxInputNumberCount = 100;

private int[] BubbleSortSourceArrayCreation()
{
    TextBox source = FindTextBox("ArrayTextBox");
    // 去除输入首尾空白字符,兼容前后误输入空格的场景
    string inputContent = source.Text.Trim();
    
    // 空输入直接返回空数组,也可按需替换为弹窗提示
    if (string.IsNullOrWhiteSpace(inputContent))
    {
        return Array.Empty<int>();
    }

    // 分割时自动移除空条目,兼容连续逗号、首尾逗号的异常输入格式
    string[] sourceArray = inputContent.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
    
    // 校验输入数量上限,超出直接抛出明确提示
    if (sourceArray.Length > MaxInputNumberCount)
    {
        throw new InvalidOperationException($"输入数字数量不能超过{MaxInputNumberCount}个");
    }

    // 安全转换整数,过滤每个条目前后的空格,兼容"1, 5, -3"这类带空格的输入格式
    List<int> intsToSort = new List<int>();
    foreach (string item in sourceArray)
    {
        string trimmedItem = item.Trim();
        if (!int.TryParse(trimmedItem, out int parsedNum))
        {
            throw new FormatException($"输入内容\"{trimmedItem}\"不是合法整数");
        }
        intsToSort.Add(parsedNum);
    }

    return intsToSort.ToArray();
}

额外优化说明

  • 方法返回值从通用Array改为强类型int[],可以直接传给你已经调试完成的冒泡排序方法,避免拆装箱带来的额外性能损耗。
  • 如果需要从交互层面减少非法输入,可以给文本框增加KeyPress事件,实时拦截非数字、非逗号、非负号的按键输入,从入口降低异常概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:06:32