在数组中显示3个不同列的平均值

时间:2015-05-04 15:39:22

标签: c# multidimensional-array

我正在尝试读取数组中的三列,并对它们求平均值。数组示例:

1095       10.40  13.65  9.11  

需要输出:

Home ID#   Size1  Size2  Size3 Average
1095       10.40  13.65  9.11  11.05

我的代码中已经达到以下目的:

static void DisplayAverageSizes(double[,] roomsArray)
        {

            const int SCORESROWS = 7;
            const int SCORESCOLS = 4;
            uint[] scoresRowTotal = new uint[SCORESROWS];
            uint[] scoresColTotal = new uint[SCORESCOLS];
            uint[,] scores = new uint[,] { };

            for (int i=0; i<SCORESROWS; i++)
                for (int j=0; j<SCORESCOLS; j++)
                {
                    scoresRowTotal[i] += scores[i, j];
                    scoresColTotal[j] += scores[i, j];
                }
            for (int i = 0; i < SCORESROWS; i++)
            {
                Console.WriteLine();
                for (int j = 0; j < SCORESCOLS; j++)
                    Console.Write("{0,9} ", scores[i, j]);
                Console.WriteLine("{0,9}", scoresRowTotal[i]);
            }

            Console.WriteLine();
            for (int j = 0; j < SCORESCOLS -1; j++)
                Console.Write("{0,9} ", scoresColTotal[j]);

我得到的错误是:

未处理的异常:System.IndexOutOfRangeException:索引超出了数组的范围。它在第93行引用(Double [,] roomsArray)。由于输入是双重格式,例如Size1为10.41,如果我没有弄错,这将是双重浮动。或者我需要使用.ConvertTo()来处理请求。无论哪种方式,我都需要显示我的样本输出。

谢谢, Ĵ

1 个答案:

答案 0 :(得分:1)

当您尝试访问不存在的数组元素时,会抛出

IndexOutOfRangeException

请注意,您已按如下方式初始化分数:

uint[,] scores = new uint[,] { };

这将创建一个空的二维无符号整数数组。但是,您可以按如下方式引用它:

scoresRowTotal[i] += scores[i, j];

在尝试使用之前,请确保在数组中添加了一些内容:

uint[,] scores = new uint[,] { {0, 1}, {2, 3} };

<强>更新

我向您展示的是数组初始值设定项语法。基本上,数组出现在内存中,如下所示:

[0] [1]
[2] [3]

因此第0行第0列的项目值为0,第1行第1列的项目值为3.

你可以根据需要尽可能深地嵌套它们,尽管它们在那时很难维护。 (更不用说,难以图表。)