在二维数组中分配值不起作用 - 交换索引
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);
}
基本上我有一个二维数组,如下所示:
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);
}