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

如何将一行输入的数字正确赋值给数组?并修正给定的C#错误代码

修正C#数组赋值代码的解决方案

首先咱们来拆解一下你这段代码里的几个关键问题:

  • 数组作用域错误:你在for循环内部声明了int[] a,这意味着每次循环都会新建一个数组,循环结束后这个数组就被销毁了,根本没法保留住所有元素。
  • 索引越界风险+逻辑错误:Console.ReadLine().Split()得到的数组索引是从0开始的,但你的循环从i=1开始,会跳过第一个输入的数字;而且如果输入刚好是5个数字(像你示例里的情况),n的长度是5,最大索引是4,当i=5时访问n[5]会直接抛出索引越界异常。
  • 类型不匹配+数组未初始化:你用long.Parse得到的是long类型的值,却要赋值给int[]类型的数组;而且int[] a只是声明了数组变量,没有初始化它的长度,直接赋值会编译报错。

正确的实现代码

下面是修正后的完整代码,完全贴合你把输入数字分配给数组的需求:

// 读取输入并分割成字符串数组,同时过滤空元素(避免多空格导致的问题)
string[] inputParts = Console.ReadLine().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

// 初始化int数组,长度和输入的数字数量一致
int[] a = new int[inputParts.Length];

// 遍历字符串数组,转换为int后赋值给int数组
for (int i = 0; i < inputParts.Length; i++)
{
    // 使用int.Parse转换为整数,也可以根据需求换成long.Parse并修改数组类型为long[]
    a[i] = int.Parse(inputParts[i]);
}

// 如果你示例中a[4]=10是需要手动修改的特殊逻辑,可在循环后单独设置
// a[4] = 10;

// 测试输出(可选,验证赋值结果)
Console.WriteLine("数组元素:");
for (int i = 0; i < a.Length; i++)
{
    Console.WriteLine($"a[{i}] = {a[i]}");
}

代码说明

  • 加入StringSplitOptions.RemoveEmptyEntries可以处理输入中存在多个连续空格的情况,避免生成空字符串元素。
  • 数组a在循环外部声明并初始化长度,确保能存储所有输入的数字,且循环结束后可以正常使用。
  • 循环从i=0开始,对应输入的第一个数字,既不会遗漏元素,也不会出现索引越界的问题。
  • 如果确实需要存储长整型数字,只需把数组类型改为long[],转换方法换成long.Parse即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:27:32