You need to enable JavaScript to run this app. 如何将string数组转换为int数组 解决转换时报格式不正确的问题
优惠活动
大模型
产品
解决方案
定价
更多

如何将string数组转换为int数组 解决转换时报格式不正确的问题

问题原因

  • 首先排查变量名不一致问题:你在类中声明的数组变量名为array,但业务代码里使用的变量名是arreglo,如果实际项目中确实是这个写法,首先会触发变量未定义错误,需要先修正这个笔误。
  • 核心的格式报错由int.Parse()方法触发:该方法是强校验转换方法,只要待转换的字符串不符合32位整数的规范,就会直接抛出格式异常,常见触发场景包括:
    • 输入文本包含非数字内容,比如字母、汉字、特殊符号、小数点
    • 输入内容首尾带逗号,比如,1,2,3或者1,2,3,,Split后会生成空字符串,无法转换为整数
    • 输入的数字超出int类型的取值范围(-2147483648 到 2147483647)
    • 输入时使用了全角数字字符

解决方案

首先修正变量名不一致的问题,把类中声明的数组改为string[] arreglo;,或者把业务代码里的arreglo全部替换为array,保持两边命名一致。
然后优化转换逻辑,不要直接使用int.Parse,改用安全转换方法int.TryParse,同时对Split的结果做预处理过滤,优化后的代码如下:

捕获按钮逻辑优化

private void bt_capturar_Click(object sender, EventArgs e)
{
    string datos = txb_numeros.Text.Trim(); // 先移除输入内容的首尾空白
    // Split时添加参数移除空条目,避免首尾逗号生成空字符串
    arreglo = datos.Split(',', StringSplitOptions.RemoveEmptyEntries);
    lbx_elementos.Items.Clear();
    foreach (string elementos in arreglo)
    {
        // 移除单个元素的前后空格,避免输入时带的空格影响后续转换
        string trimEle = elementos.Trim();
        lbx_elementos.Items.Add(trimEle);
    }
}

求和按钮逻辑优化

private void bt_sumar_Click(object sender, EventArgs e)
{
    int suma = 0;
    foreach (string item in arreglo)
    {
        // 用TryParse做安全转换,转换失败可以选择提示用户或者跳过非法值
        if (int.TryParse(item.Trim(), out int numero))
        {
            suma += numero;
        }
        else
        {
            // 可选:提示用户具体哪个值不符合格式要求
            MessageBox.Show($"值 [{item}] 不是有效的整数,请检查输入内容!");
            return; // 终止求和操作,不需要的话可以注释本行,程序会自动跳过非法值继续求和
        }
    }
    MessageBox.Show("La suma es igual a " + suma.ToString());
}

如果业务需要支持小数求和,把代码里的int替换为decimal或者double即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 09:36:04