如何将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
相关产品推荐
相关产品推荐

