1

グローバルを宣言することは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 ");


    }
}

配列を表示するためのコードを書いてみたところ、配列のスコープがmultiDynamicforループ内に残っていることがわかりました。この配列にアクセスする方法はありますか?

更新 -最後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 に答える