2D阵列在特定点填充

时间:2016-11-29 21:02:21

标签: c#

对于这个程序,我已经要求用户输入数组大小,然后按时间顺序填充数字,直到数组已满。我想将此数组放入网格中。我想知道是否可以在某一点开始输入数组,比如它是数字1,2,3,4,5,6,7,8,9,10。我能否开始输入在像[0,2]这样的某个点上,所以基本上不使用第一个槽来制作网格;

[] [] [1] [2] [3]
[4] [5] [6] [7] [8]
[9] [10] [] [] []

我想知道我是否以及如何能够做到这一点 提前谢谢!

    class Program
   {
      static void Main(string[] args)
      {

        int Height = 4;
        int Width = 5;

        int[,] grid = new int[Height, Width];

        Console.Write("Input Number: ");
        int number = int.Parse(Console.ReadLine());
        int[] InputNumber = new int[number];
        var randomNumbers = Enumerable.Range(1, number).ToArray();

        /*
        [0,0] [0,1] [0,2] [0,3] [0,4]
        [1,0] [1,1] [1,2] [1,3] [1,4] 
        [2,0] [2,1] [2,2] [2,3] [2,4] 
        [3,0] [3,1] [3,2] [3,3] [3,4]*/

    }
}

}

1 个答案:

答案 0 :(得分:0)

您可以修改代码以包含单元格偏移量,如下所示

static void Main(string[] args)
    {
        int Height = 4;
        int Width = 5;
        int[,] grid = new int[Height, Width];
        Console.Write("Start Number :");
        int startnum = int.Parse(Console.ReadLine());
        Console.Write("End Number :");
        int endnum = int.Parse(Console.ReadLine());
        Console.Write("input nmber of cells to be offset at max "+Width*Height+" :");
        int cellofs = int.Parse(Console.ReadLine());
        var myNumbers = Enumerable.Range(startnum, endnum).ToArray();
        int t = 1;
        for(int i=cellofs;i<Width*Height;i++)
        {
            int iline = i / Width;
            int jcol = i % Width;
            if (t <= (endnum - startnum))
            {
                grid[iline, jcol] = myNumbers[t];
                t++;
            }
        }
        for (int i = 0; i < Height; i++)
        {
            for (int j = 0; j < Width; j++)
            {
                Console.Write(grid[i, j]+" ");
            }
            Console.WriteLine();
        }
        Console.ReadKey();
    }

希望这些帮助。