打印NxNxN矩阵

时间:2014-04-30 18:53:39

标签: c# oop matrix

我有一个NxNxN矩阵生成代码如下:

namespace Physics
{
    class _3DMatrix
    {
         public int[, ,] m;

         public _3DMatrix(int size1, int size2, int size3, int a)
         {
             m = new int[size1, size2, size3];

             for (int x = 0; x < size; x++)
             {
                 for (int y = 0; y < size; y++)
                 {
                     for (int z = 0; z < size; z++)
                     {
                         m[x, y, z] = a;
                     }
                 }
             }
         }

        public void Print()
        {
            for (int x = 0; x < m.Rank; x++)
            {
                for (int y = 0; y < m.Rank; y++)
                {
                    for (int z = 0; z < m.Rank; z++)
                    {
                        Console.Write("{0} ", m[x, y, z]);
                    }
                    Console.WriteLine();
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}

我实现了一个打印功能,无法打印正确的矩阵。 我该如何为任何维度的矩阵编写正确的打印函数?

这就是我调用矩阵的方式:

_

3DMatrix m = new _3DMatrix(5, 4, 3, 0);
m.Print();

我应该在3个s1xs2矩阵中获得所有零,但是我得到了 这是一个示例输出:

0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0

我明白这个问题是由于我使用的是rank属性,但是如何正确实现呢? 感谢。

1 个答案:

答案 0 :(得分:2)

而不是Rank使用GetLength

根据MSDN:

  

获取一个32位整数,表示数组指定维度中的元素数。

for (int x = 0; x < m.GetLength(0); x++)
{
    for (int y = 0; y < m.GetLength(1); y++)
    {
         for (int z = 0; z < m.GetLength(2); z++)
         {
              Console.Write("{0} ", m[x, y, z]);
         }
         Console.WriteLine();
    }
    Console.WriteLine();
 }