我有一个矩阵。我需要从矩阵中获取一维数组。例如,我有以下矩阵:
123
456
789
所以它看起来像 3 个数组:147、258、369。
但是我在这段代码中得到了“索引超出范围异常”:
int[] b = new int[n];
for (i = 0; i < n; i++)
{
b[i] = a[i, n];
Console.Write(b[i] + " ");
}
Console.WriteLine();
感谢您的帮助。
这是已经可以运行的完整代码:
static void Main(string[] args)
{
int n = 0, m = 0, i = 0, j = 0;
Random r = new Random();
Console.WriteLine("Please, input matrix size:");
Console.Write("\tn = ");
n = Convert.ToInt32(Console.ReadLine());
Console.Write("\tm = ");
m = Convert.ToInt32(Console.ReadLine());
Console.WriteLine();
int[,] a = new int[n, m];
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
a[i, j] = r.Next(0, 2);
}
}
showMe(a, n, m);
Console.WriteLine();
run(a, n, m);
Console.ReadKey();
int[][] b = new int[m][];
for (i = 0; i < m; i++)
{
b[i] = new int[n];
for (j = 0; j < n; j++)
{
b[i][j] = a[j, i];
Console.Write(b[i][j] + " ");
}
Console.WriteLine();
}
Console.WriteLine();
Console.ReadKey();
}
最佳答案
我假设 n=3 并且它是一个方阵,a[i, n];
将超出 a 的范围 - 您可以引用的最大索引是 n-1 .
我觉得你想要的是
int[][] b = new int[m][];
for (i = 0; i < m; i++)
{
b[i] = new int[n];
for (j = 0; j < n; j++)
{
b[i][j] = a[j,i];
}
}
b[0] 是你的第一个数组,b[1] 是你的第二个....
关于c# - 如何从矩阵中获取一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5010283/