C# - 创建一个2D数组然后循环它

时间:2013-07-23 15:33:36

标签: c# arrays multidimensional-array

我正在尝试编写以下代码:创建一个多维数组,然后遍历所有行和列,并在该单元格中放置0到9之间的随机数。

因此,例如,如果我打印出框/矩形,它将看起来像这样:

1 4 6 2 4 1
4 5 6 9 2 1
0 2 3 4 5 9
2 5 6 1 9 4
3 6 7 2 4 6
7 2 2 4 1 4

我所拥有的代码(我相信)工作正常,但是,只有当我创建具有相同行数和列数的数组(例如,10x10,20x20,15x15)时,它才有效,但如果我尝试30x10之类的东西,我会得到:

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the boun
ds of the array.
   at ConsoleApplication2.Program.Main(String[] args) in c:\Users\Lloyd\Document
s\Visual Studio 2010\Projects\ConsoleApplication2\ConsoleApplication2\Program.cs
:line 22

基本上,我无法弄清楚如何使用不同数量的行和列创建数组,然后循环遍历它。

任何线索都会受到赞赏,谢谢。

我的代码:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        //The width and height of the box.
        const int row = 30;
        const int column = 10;

        static void Main(string[] args)
        {
            int[,] array = new int[row, column];
            Random rand = new Random();

            for (int i = 0; i < column; i++)
            {
                for (int j = 0; j < row; j++)
                {
                    array[i, j] = rand.Next(0, 10);

                }
            }


            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < array.GetLength(1); j++)
                {
                    Console.Write(array[i, j].ToString() + " ");
                }
                Console.WriteLine("");
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您的for循环被反转:

for (int i = 0; i < row; i++)
{
    for (int j = 0; j < column; j++)
    {
        array[i, j] = rand.Next(0, 10);

    }
}

答案 1 :(得分:0)

你已经在循环中逆转了。你分配了30行和10列,但循环 10行30列

试试这个

            int[,] array = new int[row, column];
            Random rand = new Random();

            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < column; j++)
                {
                    array[i, j] = rand.Next(0, 10);

                }
            }

答案 2 :(得分:0)

我相信你在初始化数组时已经交换了行和列索引。 改变你的

int[,] array = new int[row,  column];

int[,] array = new int[column, row];