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