【问题标题】:Assigning value in 2D array not working - swapping indices在二维数组中分配值不起作用 - 交换索引
【发布时间】:2019-02-06 22:56:17
【问题描述】:

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

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

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

我正在尝试将 1 到 20 之间的随机数放在由“x”表示的位置。我知道如何做到这一点,但是,我希望“0”另一侧的“x”中的数字相等。例如,

值@i = 2, j = 3 等于值@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();

【问题讨论】:

    标签: c# arrays for-loop console 2d


    【解决方案1】:

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

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2016-09-19
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多