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

如何将存储数字的char数组拼接并转换为int类型

错误原因

你触发System.FormatException的核心问题是提前修改了char数组的内容:
你代码中把原始数字字符数组的每个元素都做了digit[z] -= '0'处理,原始char数组存储的是'1'、'2'这类可识别的数字ASCII字符,减'0'后元素变为数值1、2对应的ASCII控制字符,已经不是合法的数字字符格式,所以直接调用int.Parse、string.Join拼接转换都会报错。

解决方案

在你标记的// number = ?????位置,用以下两种方案任选其一即可:

方案1:数学累加转换(不需要修改原有逻辑)

直接遍历处理后的数值型char数组,通过位权累加得到最终int值:

int res = 0;
foreach (var num in digit)
{
    res = res * 10 + num;
}
return res;

方案2:转回数字字符后用字符串转换

把每个元素加回'0'恢复为数字字符,再拼接转int:

var numStr = new string(digit.Select(x => (char)(x + '0')).ToArray());
return int.Parse(numStr);

额外优化建议

你可以直接删除提前做digit[z] -= '0'的循环:数字字符'0'~'9'的ASCII值是连续递增的,直接比较字符大小的结果和比较对应数值大小的结果完全一致,不影响你后续的排序、交换逻辑。删掉这个循环后,最后转换可以直接简化为:

return int.Parse(new string(digit));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:18:05