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

用户输入字符串转换为int[]时出现数值不符问题

问题原因与解决方案

哦,我立刻就明白你遇到的问题了!

当你用firstArray.Select(x => Convert.ToInt32(x))的时候,这里的x是字符串中的单个Char类型字符,而Convert.ToInt32(char)方法返回的是该字符的ASCII码值——'1'字符的ASCII码正好是49,这就是为什么输入'1'却得到49的原因。

下面分两种常见场景给你解决方案:

场景1:输入用空格/逗号分隔的数字(比如输入"1 5 8"得到数组[1,5,8])

这应该是你注释里示例想要的效果,先把输入字符串分割成单个数字字符串,再转换为int:

Console.WriteLine("Enter first array (numbers separated by spaces)");
string firstArrayInput = Console.ReadLine();
// 按空格分割,同时移除空项(避免用户多打空格)
int[] first = firstArrayInput.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)
                             .Select(x => int.Parse(x))
                             .ToArray();

Console.WriteLine("Enter second array (numbers separated by spaces)");
string secondArrayInput = Console.ReadLine();
int[] second = secondArrayInput.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)
                              .Select(x => int.Parse(x))
                              .ToArray();

场景2:输入连续的数字字符(比如输入"158"得到数组[1,5,8])

如果是想把每个字符单独转成对应的数字,你可以用字符的ASCII码差值(因为'0'的ASCII码是48,任何数字字符减去'0'就能得到对应的int值),或者用char.GetNumericValue:

Console.WriteLine("Enter first array (continuous digits like '158')");
string firstArray = Console.ReadLine();
// 方法1:利用ASCII码差值
int[] first = firstArray.Select(x => x - '0').ToArray();

Console.WriteLine("Enter second array (continuous digits like '249')");
string secondArray = Console.ReadLine();
// 方法2:使用char.GetNumericValue(需转换为int)
int[] second = secondArray.Select(x => (int)char.GetNumericValue(x)).ToArray();

额外建议:添加输入验证

为了避免用户输入非数字内容导致程序崩溃,建议使用int.TryParse做验证:

Console.WriteLine("Enter first array (numbers separated by spaces)");
string firstArrayInput = Console.ReadLine();
var numberStrings = firstArrayInput.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
List<int> firstList = new List<int>();

foreach (var s in numberStrings)
{
    if (int.TryParse(s, out int num))
    {
        firstList.Add(num);
    }
    else
    {
        Console.WriteLine($"警告:跳过无效输入 '{s}',它不是有效的整数");
    }
}

int[] first = firstList.ToArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:13