我知道宣布全局不是c#的事情。我有一个多维数组的代码,我希望用户输入行的数量,然后输入每行的cols数。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Multidimensional_Array
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("ENter the no of rows ");
int rows=Convert.ToInt32(Console.ReadLine());
for(int i=0;i<rows;i++)
{
Console.WriteLine("Enter no of columns for "+i+" row");
var columns = Convert.ToInt32(Console.ReadLine());
int [,] multiDynamic=new int[rows,columns];
Console.WriteLine("enter " +i+ " row elements");
for(int j=0;j<columns;j++)
{
multiDynamic[i,j]=Convert.ToInt32(Console.ReadLine());
}
}
Console.WriteLine("The array elements are ");
}
}
现在在尝试编写用于显示数组的代码时,发现数组multiDynamic
的范围将保留在for循环中。是否有任何方法可以访问此数组?
更新 - 最后在显示数组时也需要访问columns
数组。请为此发布解决方案。
答案 0 :(得分:2)
编辑根据评论进行了更新。
使用Jagged数组。
int [][] multiDynamic=new int[rows][];
for(int i=0;i<rows;i++)
{
Console.WriteLine("Enter no of columns for "+i+" row");
var columns = Convert.ToInt32(Console.ReadLine());
multiDynamic[i] = new int[columns];
Console.WriteLine("enter " +i+ " row elements");
for(int j=0;j<columns;j++)
{
multiDynamic[i][j]=Convert.ToInt32(Console.ReadLine());
}
}
Console.WriteLine("The array elements are ");
您可以访问内部数组(列),如下所示
foreach(var innerArray in multiDynamic)
{
foreach(var item in innerArray)
{
Console.WriteLine(item);
}
Console.WriteLine();
}
答案 1 :(得分:1)
在循环外声明数组。
int [,] multiDynamic = null;
for(int i=0;i<rows;i++)
{
Console.WriteLine("Enter no of columns for "+i+" row");
var columns = Convert.ToInt32(Console.ReadLine());
multiDynamic=new int[rows,columns];
Console.WriteLine("enter " +i+ " row elements");
for(int j=0;j<columns;j++)
{
multiDynamic[i,j]=Convert.ToInt32(Console.ReadLine());
}
}
答案 2 :(得分:1)
在第一个循环之外声明它。
答案 3 :(得分:-1)
在外部scrope声明它:
int rows=Convert.ToInt32(Console.ReadLine());
int [,] multiDynamic=new int[rows,columns];
for(int i=0;i<rows;i++)
{
Console.WriteLine("Enter no of columns for "+i+" row");
var columns = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("enter " +i+ " row elements");
for(int j=0;j<columns;j++)
{
multiDynamic[i,j]=Convert.ToInt32(Console.ReadLine());
}
}
Console.WriteLine("The array elements are ");