C#中如何用FOR为2D数组赋值?

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:38:36
我的代码如下:
using System;

class s
{
static void Main()
{
Console.WriteLine("请输入2D数组的大小,回车确认!");
int[,] a = new int[Int32.Parse(Console.ReadLine()), Int32.Parse(Console.ReadLine())];
Console.WriteLine("请输入2D数组的元素:");

for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < i; j++)
{
a[i,j]=Int32.Parse (Console.ReadLine ());
}
}

for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < i; j++)
{
Console.WriteLine ( a[i, j] );
}
}
Console.ReadLine();
}
}
运行时出现下图这样的错误,代码错在哪儿了?应该怎么改写?谢谢了!

a.Length代表的是总长度,比如a[2,2]的长度是4,而循环时i和j都只能小于2。
而且当数组的长和宽不一样时就更不对了,比如a[5,3]...

可以改成:
static void Main()
{
Console.WriteLine("请输入2D数组的大小,回车确认!");
int num1 = int.Parse(Console.ReadLine());
int num2 = int.Parse(Console.ReadLine());
int[,] a = new int[num1, num2];
Console.WriteLine("请输入2D数组的元素:");

for (int i = 0; i < num1; i++)
{
for (int j = 0; j < num2; j++)
{
a[i, j] = Int32.Parse(Console.ReadLine());
}
}

for (int i = 0; i < num1; i++)
{
for (int j = 0; j < num2; j++)
{
Console.WriteLine(a[i, j]);
}
}
Console.ReadLine();
}
分着记录数组的长