1

我知道声明 global 不是 c# 的事情。我有一个多维数组的代码,我希望用户输入行数,然后输入每行的列数。

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在最后显示数组的同时也需要访问数组。请为此发布解决方案。

4

4 回答 4

2

编辑根据评论更新。

使用锯齿状数组。

     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();
     }        
于 2012-06-27T07:03:43.330 回答
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());
            }


        }
于 2012-06-27T07:03:23.283 回答
1

在第一个循环之外声明它。

于 2012-06-27T07:04:19.247 回答
-1

在外部范围声明它:

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 ");
于 2012-06-27T07:03:50.210 回答