-1

このエラーが発生します...

インデックスが範囲外でした。負ではなく、コレクションのサイズよりも小さい必要があります。
パラメータ名:index

示された位置のコードで。

List<int>[] tetangga = new List<int>[this.observasi];
for (int i = 0; i < this.observasi; i++) 
{
    tetangga[i] = new List<int>();
    for (int j = 0; j < this.observasi; j++) 
    {
        if (tableWeight[i, j] > 0) 
        {
            tetangga[i].Add(j);
        }
    }
}

this.dataTable.ColumnCount = 2;
this.dataTable.Columns[0].HeaderCell.Value = "REGION";
this.dataTable.Columns[1].HeaderCell.Value = "REGION NEIGHBOR";
this.dataTable.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
this.dataTable.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
this.dataTable.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

int jlhRow = 0;
for (int i = 0; i < this.observasi; i++)
{
    jlhRow = jlhRow + tetangga[i].Count;
}
this.dataTable.RowCount = jlhRow;

int row = 0;
for (int k = 0; k < this.observasi; k++)
{
    this.dataTable[0, row].Value = this.nameRegion[k];  // <-- error occurs here
    for (int l = 0; l < tetangga[k].Count; l++)
    {
        this.dataTable[1, row].Value = this.nameRegion[tetangga[k][l]];
        row++;
    }
}

誰かが私に理由を説明できますか?

4

2 に答える 2

1

あなたの問題はここにあります

    for (int j = 0; j < this.observasi; j++) 
    {
        if (tableWeight[i, j] > 0) 
        {
            tetangga[i].Add(j);
        }
    }

tableWeight の 2 番目の次元が何であるかを知るにはどうすればよいでしょうか? this.observasiまでは行かないと思います。

于 2012-08-12T17:51:33.803 に答える
0

行の前に、ループの開始点にブレークポイントを置きます。

this.dataTable[0, row].Value = this.nameRegion[k];

デバッガーで と を調べるdataTablenameRegion、独自の質問に答えることができます。コレクションには、指定したインデックスの要素が含まれていない可能性があります。

于 2012-08-12T17:51:47.717 に答える