我正在尝试读取数组中的三列,并对它们求平均值。数组示例:
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()来处理请求。无论哪种方式,我都需要显示我的样本输出。
谢谢, Ĵ
答案 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.
你可以根据需要尽可能深地嵌套它们,尽管它们在那时很难维护。 (更不用说,难以图表。)