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

C#矩阵相加程序出现Index was outside the bounds of the array错误求助

C#矩阵相加程序数组越界问题排查与修复

你的代码出现"Index was outside the bounds of the array."错误,是由以下几个明确问题导致的:

  • 第二个矩阵赋值逻辑错误:生成第二个矩阵matrix1时,你用了第一个矩阵matrix的行列长度作为循环条件,还错误地修改了matrix的元素值,正确的做法应该是遍历matrix1的行列,给matrix1的元素赋值。
  • 缺少矩阵合法性校验:矩阵相加的前提是两个矩阵的行数、列数完全一致,但你的代码没有对用户输入的两个矩阵行列数做校验,只要输入不同,相加时就会触发数组越界。
  • 打印结果循环条件写错:最后打印Sum矩阵的内层循环,把判断条件j < columns写成了i < columns,导致j会一直递增直到超出数组下标范围。

以下是修正后的完整代码:

static void Main(string[] args)
{
    Console.WriteLine("矩阵相加要求两个矩阵的行数和列数必须相同\n");
    
    // 输入第一个矩阵的行列数
    Console.Write("输入第一个矩阵的行数: ");
    int rows1 = Convert.ToInt32(Console.ReadLine());
    Console.Write("输入第一个矩阵的列数: ");
    int columns1 = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("---------------------------");

    // 生成第一个随机矩阵并打印
    int[,] matrix = new int[rows1, columns1];
    Random random = new Random();
    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            matrix[i, j] = random.Next(111);
        }
    }
    Console.WriteLine("第一个矩阵:");
    for (int i = 0; i < matrix.GetLength(0); i++)
    {
        for (int j = 0; j < matrix.GetLength(1); j++)
        {
            Console.Write(matrix[i, j] + "\t");
        }
        Console.WriteLine();
    }

    // 输入第二个矩阵的行列数并校验
    Console.WriteLine("\n输入第二个矩阵的行列数");
    Console.Write("输入第二个矩阵的行数: ");
    int rows2 = Convert.ToInt32(Console.ReadLine());
    Console.Write("输入第二个矩阵的列数: ");
    int columns2 = Convert.ToInt32(Console.ReadLine());
    
    if (rows1 != rows2 || columns1 != columns2)
    {
        Console.WriteLine("错误:两个矩阵的行数或列数不一致,无法相加!");
        return;
    }
    Console.WriteLine("---------------------------");

    // 生成第二个随机矩阵并打印
    int[,] matrix1 = new int[rows2, columns2];
    Random random1 = new Random();
    for (int i = 0; i < matrix1.GetLength(0); i++)
    {
        for (int j = 0; j < matrix1.GetLength(1); j++)
        {
            matrix1[i, j] = random1.Next(111);
        }
    }
    Console.WriteLine("第二个矩阵:");
    for (int i = 0; i < matrix1.GetLength(0); i++)
    {
        for (int j = 0; j < matrix1.GetLength(1); j++)
        {
            Console.Write(matrix1[i, j] + "\t");
        }
        Console.WriteLine();
    }

    // 计算矩阵相加结果
    double[,] sum = new double[rows1, columns1];
    Console.WriteLine("\n矩阵相加结果:");
    for (int i = 0; i < rows1; i++)
    {
        for (int j = 0; j < columns1; j++)
        {
            sum[i, j] = matrix[i, j] + matrix1[i, j];
            Console.Write(sum[i, j] + "\t");
        }
        Console.WriteLine();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:37:46