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

C#问题:控制台获取整数数组后无法正确输出数组值

问题分析
  • 索引越界异常:numbers函数硬编码循环10次,但后续调用传入的数组长度为1到9,远小于10,执行时会直接抛出IndexOutOfRangeException。
  • 数组输出无效:直接用Console.WriteLine输出数组对象,C#默认会打印数组的类型标识(如System.Int32[]),而非数组内的元素值。
  • 输入数据未留存:首次调用numbers(new int[10]);没有保存返回结果,输入的数值直接丢失,无法使用。
修复后的代码
Console.WriteLine("Function get numbers...");

static int[] GetNumbers(int[] values)
{
    for (int ind = 0; ind < values.Length; ind++)
    {
        Console.WriteLine($"Type number {ind + 1}: ");
        values[ind] = int.Parse(Console.ReadLine());
    }
    return values;
}

// 首次调用并保存输入的数组
int[] firstArray = GetNumbers(new int[10]);

// 打印首次输入的数组元素
Console.WriteLine("\nFirst array values:");
PrintArray(firstArray);

// 循环创建不同长度的数组并输出内容
for (int s = 1; s < 10; s++)
{
    Console.WriteLine($"\nCreating array of length {s}:");
    int[] currentArray = GetNumbers(new int[s]);
    Console.WriteLine("Array values:");
    PrintArray(currentArray);
}

// 辅助方法:打印数组元素
static void PrintArray(int[] array)
{
    Console.WriteLine(string.Join(", ", array));
}
修改说明
  1. 适配数组长度:将循环条件从固定的ind < 10改为ind < values.Length,让函数能处理任意长度的输入数组,彻底避免索引越界。
  2. 正确输出数组:新增PrintArray方法,用string.Join将数组元素拼接为可读的字符串,解决直接打印数组无意义的问题。
  3. 留存输入数据:保存每次调用GetNumbers的返回值,确保输入的数值可以被后续逻辑使用。
  4. 优化用户提示:调整控制台输出的提示文本,让用户清楚当前需要输入的是第几个数字,以及当前处理的数组长度,提升交互体验。
  5. 规范命名:将函数名改为GetNumbers,符合C# PascalCase的命名规范,增强代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:20:30