آشنایی با آرایه های چند بعدی در جاوا

+1
+69
1394/03/18 0 1222 م.مطلبی

در این آموزش قصد داریم شما کاربران گرامی را با آرایه هایی با بیشتر از یک بعد در جاوا آشنا کنیم . لازم به توضیح است که در صورتی که مفهوم آرایه های یک بعدی را به خوبی درک کرده باشید بی شک یادگیری و کار با آرایه های چند بعدی برای شما بسیار ساده خواهد بود .توجه شود که ما در این آموزش تنها کار با آرایه های دو بعدی را به شما دوستان آموزش می دهیم که بر اساس آن به راحتی می توانید با دیگر آرایه ها نیز کار کنید .آرایه های دو بعدی دارای سطر و ستون می باشند. به عنوان مثال یک آرایه دو بعدی با 2 سطر و 5 ستون توانایی ذخیره 10 مقدار را خواهد داشت. در واقع در هرسطر از این آرایه پنج مقدار ذخیره می شود.همچنین برای دسترسی به یک عنصر خاص درون ارایه های دو بعدی باید از دو اندیس استفاده کنیم که اولین اندیس تعیین کننده سطر و دومین اندیس تعیین کننده ستون در آرایه می باشد. تنها مسئله مهمی که در زمان کار با آرایه های دو بعدی باید حتما به آن توجه کنیم تخصیص حافظه عناصر آرایه می باشد. فرض کنید می خواهیم آرایه a را با 4 سطر و 5 ستون تعریف کنیم. در اصلاح به این آرایه یک آرایه  4 در 5 دو بعدی گفته می شود . برای تعریف و تخصیص حافظه به این آرایه به صورتی که در زیر مشاهده می نمایید عمل می کنیم.

int a[][] = new int[4][5];

همان طور که در این دستور مشاهده می نمایید. پس از ذکر نام آرایه از دو جفت براکت باز و بسته استفاده کرده ایم که در واقع تعیین کننده ابعاد آرایه نیز می باشد. همچنین با استفاده از عملگر new به صورتی مشاهده می نمایید تخصیص حافظه به آرایه مذکور صورت پذیرفته است.

در آرایه ای که به وسیله این دستور تعریف کرده ایم آرایه دارای 4 سطر می باشد که در هر سطر نیز 5 ستون قرار گرفته است . اما در مواقعی می خواهیم که در هر یک از سطر ها تعداد ستون ها متغیر باشد. مثلا در سطر اول 10 ستون و در سطر دوم 8 ستون قرار گرفته باشد. سوال این جاست که در این موارد اختصاص حافظه به آرایه به چه صورت انجام می شود.

فرض کنید که می خواهیم آرایه a را به صورتی تعریف کنیم که دارای 2 سطر باشد و در سطر اول 5 ستون و در سطر دوم 3 ستون قرار گرفته باشد . برای این منظور به صورتی که در تصویر مشاهده می نمایید کد نویسی می کنیم.


int a[][];
a = new int[2][];
a[0] = new int[5];
a[1] = new int[3];

در واقع در این حالت می خواهیم درون هر سطر از آرایه یک آرایه جدید یک بعدی تعریف کنیم . در این دستورات همان طور که مشاهده می نمایید ابتدا آرایه کلی را تعریف می کنیم. سپس بعد اول که همان تعداد سطر های ارایه می باشد. را تخصیص حافظه می دهیم و در ادامه نیز هر یک از سطر های آرایه را تخصیص حافظه می دهیم. حال می خواهیم با استفاده از یک تمرین عملی نحوه استفاده از آرایه ها چند بعدی در جاوا را به شما آموزش دهیم.

برای این منظور پروژه ایجاد شده در دروس قبلی را باز کنید و کلاس جدیدی با نام subsun_class_21 به پکیج subsun_package اضافه کنید. و درون آن را بصورت زیر پر نمایید و سپس آن را ذخیره کنید.


package subsun_package;

import java.awt.Container;
import javax.swing.*;

    public class subsun_class_21 extends JApplet {        
            JTextArea outputArea;
            public void init(){        
            
                outputArea = new JTextArea();
                Container container = getContentPane();
                container.add( outputArea );


                int array1[][] = { { 11, 12, 13 }, { 21, 22, 23 } };                
                int array2[][] = { { 11, 12 }, { 21 }, { 31, 32, 33 } };


                outputArea.setText( "مقادیر آرایه 1 : \n" );
                display_array( array1 );

                outputArea.append( "\nمقادیر آرایه 2 : \n" );
                display_array( array2 );


        }
            //تابع نمایش محتوای آرایه دو بعدی
        public void display_array( int array[][] )
                    {

                            for ( int row = 0; row < array.length; row++ ) {
                                        for ( int column = 0;
                                                            column < array[ row ].length;
                                                            column++ )
                                                outputArea.append( array[ row ][ column ] + "    " );
                            outputArea.append( "\n" );
                 }
            }
}

در اینجا همانطور که مشاهده می شود یک اپلت نوشته ایم در ابتدای کار و قبل از ورود به متد init شی JTextArea را تعریف کرده ایم . از این شی برای نمایش خروجی برنامه استفاده می کنیم سپس درون متد init اشیائی که می خواهیم در خروجی نمایش داده شوند را تعریف کرده و تخصیص حافظه می دهیم با این اشیاه در دروس آینده آشنا خواهید شد . سپس دو آرایه دو بعدی را بگونه ای که در بالا مشاهده می شود تعریف کرده و به صورت دستی مقدار دهی می کنیم .آرایه اول یک آرایه 2 در 3 است یعنی این آرایه 2 سطر و 3 ستون می باشد . هر یک از سطر ها را درون یک جفت آکولاد قرار داده ایم و نیز کل مقادیر را درون یک جفت آکولاد دیگر قرار دادیم. آرایه دوم یک آرایه متغیر است که دارای 3 سطر می باشد در سطر اول 2 ستون ، در سطر دوم 1 ستون و در سطر سوم 3 ستون لحاظ شده است. در ادامه کار متد display_array را برای نمایش محتوای آرایه ها فراخوانی کرده ایم.

درون متد display_array ابتدا با استفاده از یک حلقه for سطر های آرایه را پیمایش می کنیم . توجه شود که در صورتی که متغیر length را بر روی آرایه دو بعدی همانند این دستورات استفاده کنیم تعداد سطر های آرایه بدست خواهد آمد . سپس با استفاده از حلقه for درونی ستون های آرایه پیمایش می شود . همان طور که مشاهده می نمایید در صورتی که متغیر length را بر روی هر سطر مورد استفاده قرار دهیم . آنگاه تعداد ستون های آن سطر را بدست خواهیم آورد. و بالاخر در آخرین بخش دستورات این متد، مقدار ذخیره شده در عنصر مورد نظر را با استفاده از متد append به خروجی اضافه می کنیم .

حال زمان مشاهده عملکرد دستورات این اپلت می رسد.فایل subsun_class_21 را در Package Explorer ایکلیپس انتخاب کنید و آن را اجرا کنید.

نتیجه اجرای برنامه در جاوا

همانگونه که در بالا مشاهده می شود. ابتدا آرایه اولیه و سپس آرایه دوم نمایش داده می شود.

دیدگاه ها (0)

ارسال دیدگاه ها

Image CAPTCHA
حروف نمایش داده شده در تصویر را وارد کنید.