0

我正在尝试编写以下代码:创建一个多维数组,然后遍历所有行和列,并在该单元格中放置一个 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("");
            }
        }
    }
}
4

3 回答 3

1

你的for循环是倒置的:

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

    }
}
于 2013-07-23T15:36:25.107 回答
1

你已经在循环中反转了。您分配了 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);

                }
            }
于 2013-07-23T15:36:33.783 回答
0

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

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

int[,] array = new int[column, row];
于 2013-07-23T15:40:38.737 回答