2 个多维数组的总和

Sum of 2 Multidimensional Arrays

我能够在一个多维数组中对 2 个值求和并使用控制台打印 Application.That 下面的代码打印每个多维数组的 2 个总和。但我需要的是,打印 2 个多维的总和 arrays.I 已经清理了代码,使其不那么复杂。

        int[,] a = new int[2, 2];
        int[,] b = new int[2, 2];
        int[,] c = new int[2, 2];

        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 1; j++)
            {
                Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1);
                a[i, j] = Int32.Parse(Console.ReadLine());
            }
        }

        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 1; j++)
            {
                Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1);
                b[i, j] = Int32.Parse(Console.ReadLine());
            }
        }

        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 1; j++)
            {
                c[i, j] = a[i, j] + b[i, j];
                Console.WriteLine("{0}."+c[i, j],i+1+"The sum of 2 marks is:",j+1);
            }
        }
        Console.ReadKey();

将 for 循环更改为此

 int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
        int[,] b = new int[2, 3] { { 1, 2, 3 }, { 1, 2, 3 } } ;
        int[] c = { 0, 0 };
        int[] d = { 0, 0 };

        int k = 0;
        int l = 0;

        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                c[k] =c[k]+ a[i,j];
            }
            k++;
        }
        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                d[l] = d[l]+ b[i, j];
            }
            l++;
        }
        int sum1 = 0;
        int sum2 = 0;
        for (int i = 0; i < c.Length; i++)
            sum1 += c[i];

        for (int i = 0; i < d.Length; i++)
            sum2 += d[i];

        int totalSum = sum1 + sum2;
        Console.WriteLine(totalSum);

希望对您有所帮助

问题出在这一行:

for (int j = 0; j < 1; j++)

这将 运行 恰好一次,因为 0 + 1 = 1 且 1 不小于 1。换句话说,它实际上不会对数组中的第二行执行任何操作。改成

for (int j = 0; j <= 1; j++)

它会起作用(请参阅下面的更多详细信息)。

另一件需要考虑的事情:您可能需要明确说明该操作应该如何工作。在这种情况下, "sum" 实际上是非常模糊的。例如:

Array 1     Array 2
2           3
4           6

结果应该是

Array 3
5
10

(即它像矢量加法一样工作)还是应该是 15? (修改你的代码使其像第二个代码一样工作很容易;在那种情况下,你根本不会使用内部 for 循环,只是一个计数器存储你要添加的行)。

第三种可能性(我严重怀疑这是你想要的)但你可能正在尝试这样的事情:

Array 1 Sum     Array 2 Sum
6               9

下面是一个可能有用的代码示例:

private static void AddTwoArrays()
    {
        int size;

        Console.WriteLine("Enter a size:");
        while (!int.TryParse(Console.ReadLine(), out size))
        {
            Console.WriteLine("Enter a valid int");
        }

        int[][] array1 = new int[size][];
        int[][] array2 = new int[size][];

        int sum = 0;

        int[] rowSum = new int[size];

        Random random = new Random();

        for (int i = 0; i < size; i++)
        {
            array1[i] = new int[size];
            array2[i] = new int[size];

            for (int j = 0; j < size; j++)
            {
                array1[i][j] = random.Next(0, 5);
                array2[i][j] = random.Next(0, 5);

                // This is if you want to get the sum of every number contained in the array
                sum += array1[i][j];
                sum += array2[i][j];

                // This'll give row-by-row
                rowSum[j] += array1[i][j];
                rowSum[j] += array2[i][j];
            }
        }

        Console.WriteLine("Sum: " + sum.ToString());
    }

它的工作方式与您的不完全相同,但它仍然可以作为一个有用的示例。

你不需要为此做额外的计算。真的很简单。

你可以取两个变量来告诉你每个矩阵的总和,最后你可以将它们相加。或者如果你只想要两个矩阵的总和,那么你可以只通过一个变量得到它。

因此,当您填充矩阵时,只需将相应的总和增加该值即可。

public static void Main()
{

    int[,] a = new int[2, 2];
    int[,] b = new int[2, 2];
    int[,] c = new int[2, 2];

    int sum1 = 0;
    int sum2 = 0;

    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            Console.Write("Please enter {0}. Mark of First lesson", i + 1, j + 1);
            a[i, j] = Int32.Parse(Console.ReadLine());

            sum1 += a[i,j]; 
        }
    }

    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            Console.Write("Please enter {0}. Mark of Second lesson", i + 1, j + 1);
            b[i, j] = Int32.Parse(Console.ReadLine());
            sum2 += b[i, j];
        }
    }

    Console.WriteLine("Sum: " + (sum1 + sum2));


    //for (int i = 0; i < 2; i++)
    //{
    //    for (int j = 0; j < 2; j++)
    //    {
    //        c[i, j] = a[i, j] + b[i, j];
    //        Console.WriteLine("{0}." + c[i, j], i + 1 + "The sum of 2 marks is:", j + 1);
    //    }
    //}
    Console.Read();
}