在二维数组中分配值不起作用 - 交换索引

Assigning value in 2D array not working - swapping indices

基本上我有一个二维数组,如下所示:

0 x x -1
x 0 x x
x x 0 x
-1 x x 0

如果使用索引为 'i' 和 'j' 的两个 for 循环(嵌套)并且它们彼此相等,例如i 和 j = 2,则数组 [i, j] 中的值将为 '0'。如果 'i' = array.Length - 1 且 'j' = 0(反之亦然),则数组 [i, j] 中的值将为 -1。

我想做的是在 'x' 表示的位置放置 1 到 20 之间的随机数。我知道该怎么做,但是,我希望 'x' 中“0”另一侧的数字相等。例如,

value @ i = 2, j = 3 等于 value @ i = 3, j = 2.

现在我已经在之前的程序中完成了这个:

array[j, i] = array[i, j]

但出于某种原因,在这个新程序中,这根本不再有效。

怎么了?

这是实际代码:

size = r.Next(4, 8);
        V = new int[size, size];

        for (int i = 0; i < size; i++)
        {
            s = "";
            for (int j = 0; j < size; j++)
            {
                if (i == j)
                {
                    V[i, j] = 0;
                }
                else if ((i == size - 1 && j == 0) || (i == 0 && j == size - 1))
                {
                    V[i, j] = -1;
                }
                else
                {
                    V[i, j] = r.Next(1, 20);
                }
                V[j, i] = V[i, j];

                s += "|" + V[i, j] + "|";
            }
            Console.WriteLine(s);
        }
        Console.Read();

该算法的问题在于它重新覆盖(覆盖两次)矩阵的下半部分。 试试这个循环:

for (var i = 0; i < size; i++)
{
    s = "|";
    for (int j = 0; j < size; j++)
    {
        if (i == j)
        {
            V[i, j] = 0;
        }
        else if (i == size - 1 && j == 0 || i == 0 && j == size - 1)
        {
            V[i, j] = -1;
        }
        else if (i < j)
        {
            V[i, j] = r.Next(1, 20);
            V[j, i] = V[i, j];
        }
        s += $"{V[i, j],2}|";
    }
    Console.WriteLine(s);
}