C# 二维数组读取键盘错误

C# 2D Arrays read from keyboard error

我有一个错误:"Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object." 在线 "v[i][j]=Convert.ToInt32(Console.ReadLine());" 对这种面向对象的语言有点陌生,我不确定这意味着什么。谢谢!

static void Main(string[] args)
{
    int m, n, i, j;
    int[][] v=new int[10][];
    n=Convert.ToInt32(Console.ReadLine());
    m=Convert.ToInt32(Console.ReadLine());
    for(i=0;i<n;i++)
       for(j=0;j<m;j++)
       {
          Console.WriteLine("v[{0}][{1}]= ", i, j);
          v[i][j]=Convert.ToInt32(Console.ReadLine());
       }
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
          Console.WriteLine("{0} ", v[i][j]);
       Console.WriteLine();
    }
}

我认为你需要改变这个:

int[][] v=new int[10][];

因为该代码没有为二维数组保留内存。

应该是:

        int m, n, i, j;
        n = Convert.ToInt32(Console.ReadLine());
        m = Convert.ToInt32(Console.ReadLine());
        int[,] v = new int[n,m];
        for (i = 0; i < n; i++)
            for (j = 0; j < m; j++)
            {
                Console.WriteLine("v[{0}][{1}]= ", i, j);
                v[i,j] = Convert.ToInt32(Console.ReadLine());
            }
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < m; j++)
                Console.WriteLine("{0} ", v[i,j]);
            Console.WriteLine();
        }

您可以展示 this tutorial 来自 Microsoft 的多维数组。

使用 C# 的更好方法是将其声明为二维数组。

int [,] v = new int[10,10];

然而,在这种情况下,您稍后会找到 n 和 m,因此它应该显示为:

int [,] v = new int[n,m];