آموزش برنامه نویسی جاوا (بخش نهم: کار با آرایه ها در جاوا)

استاندارد

آرایه ها و حلقه در جاوا

در بخش قبلی مشاهده کردید که برای اختصاص دادن یک مقدار به آرایه، باید شماره خانه آن آرایه ای را که می خواهید به آن مقدار دهید را به عنوان مشخصه ی اندیس آرایه تعریف کنید. سپس مقداری که می خواهید را به آن خانه از آرایه بدهید. راه دیگر تعریف مقادیر برای آرایه، استفاده از کروشه بود.

ولی اگر مقادیر، زیاد باشند باید چی کار کنیم؟ اگر اعدادی که می خواهیم به یک آرایه اختصاص دهیم زیاد باشند، استفاده از روش های قبلی کاری سخت است.

به عنوان مثال یک برنامه ی قرعه کشی را در نظر بگیرید که باید اعداد 1 تا 30 را به موقعیت های یک array اختصاص دهد. به جای تایپ یک لیست طولانی از موقعیت ها و مقادیر array ، می توانید از یک loop استفاده کنید. در اینجا کدی را مشاهده می کنید که این کار را انجام می دهد:

public class Main {
	public static void main(String[] args) {

			int[] OurArray;
			OurArray = new int[30];
			for(int i=0;i<OurArray.length;i++){
				OurArray[i]= i+1;
				System.out.print(OurArray[i]);		
			}
	}
}

اگر دقت کنید متوجه می شوید که در شرط for ، این حلقه تا مقدار OurArray.length می چرخد. یعنی OurArray.length در واقع طول یا تعداد خانه های آرایه ما را مشخص می کند.

Length یک ویژگی از آبجکت های array می باشد که می توانید برای به دست آوردن اندازه ی array از آن استفاده کنید ( تعداد موقعیت هایی که دارد). بنابراین، زمانی که مقدار در متغیر i کمتر از اندازه ی array می باشد، این loop به چرخش متداول خود ادامه خواهد داد.

 این کد باعث می شود که تمام 30 خانه ی آرایه ما با استفاده از حلقه پر شود. و شماره های 1 تا 30 به آن داده می شود.

بدیهی است که اگر می خواستیم شماره های دیگری می توانستیم به آن بدهیم. ولی اگر شماره هایی که در یک آرایه پر می شود از الگوی خاصی پیروی نکند، مجبوریم همانند بخش قبلی آن ها را دستی پر کنیم.

مرتب سازی آرایه ها در جاوا

متودهای داخلی دیگر جاوا به شما اجازه می دهند تا array های خود را مرتب سازید. برای استفاده از متود مرتب سازی array ها، ابتدا نیاز به مراجعه به یک کتابخانه ی جاوا به نام Arrays دارید. شما این کار را با عبارت import انجام می دهید.

عبارت import زیر را اضافه کنید (بالای کلاس Main):

import java.util.Arrays;

فرض کنیم کد جاوای ما به صورت زیر باشد:

import java.util.Arrays;

public class Main {
	public static void main(String[] args) {

			int[] OurArray;
			OurArray = new int[7];
			OurArray[0]=5;
			OurArray[1]=3;
			OurArray[2]=9;
			OurArray[3]=8;
			OurArray[4]=7;
			OurArray[5]=1;
			OurArray[6]=2;

	}
}

آرایه OurArray با اعداد بالا پر شده است که اگر طبق کد زیر خروجی Print از آن بگیریم

for(int i=0;i<OurArray.length;i++){
    System.out.print(OurArray[i]);
			}

خروجی زیر را مشاهده می کنیم:

5398712

اعداد بالا خانه های پر شده ی آرایه را به ما نشان می دهند.

کد زیر که از همان کتابخانه ای که آن را Import کرده بودیم، آمده است، آرایه ما را مرتب می کند.

Arrays.sort(OurArray);

حال اگر از آرایه خروجی بگیرید، مشاهده می کنید که آرایه ما به ترتیب زیر پر شده است:

1235789

آموزش برنامه نویسی جاوا (بخش هشتم: آرایه ها در جاوا)

استاندارد

در ابتدا به این سوال پاسخ می دهیم که یک array چیست؟

تاکنون با متغیرهایی کار کردید که فقط یک مقدار را در خود حفظ می کنند. متغیرهای صحیح که تنظیم می کردیم، فقط یک عدد را حفظ می کنند و متغیرهای رشته نیز فقط یک رشته از متن را در خود دارند.

یک array (ردیف) ، روشی برای حفظ بیشتر از یک مقدار در یک زمان می باشد که در واقع شبیه لیستی از آیتم ها می باشد. یک array را می توان به عنوان ستون هایی در یک صفحه ی گسترده در نظر گرفت. در واقع آرایه یک سری خانه را که پشت سر هم قرار گرفته اند مشخص می کند. به آن ها فضا می دهد. این فضا بر اساس نوع متغیر آرایه شما است.

مثلا اگر یک آرایه از نوع int با 4 خانه مشخص کنید، ارایه 4 خانه به اندازه فضای int ، مشخص می کند. و پشت سر هم قرار می دهد. حال می توانید در این خانه ها مقدار هایی که می خواهید را بدهید.

می توانید تصوری که از آرایه داشته باشید به شکل زیر نیز باشد:

 

array value row
8 0
4 1
6 2
5 3
2 4

همان طور که در جدول بالا مشاهده می کند، آرایه برای هر ردیف، یک مقدار عددی دارد. هر ردیف با یک شماره عددی مشخص می شود که مقدار آن در ستون رو به روی آن نوشته شده است. در جدول بالا، مشاهده می کنید که ردیف ها از شماره 0 شروع شده و تا شماره 4 ادامه دارد.

حال بیایید آرایه ای که در جدول بالا مشاهده می کنید را به صورت کد جاوا بنویسیم. آرایه بالا عدد است پس ما هم یک متغیر عددی از نوع int اعلام می کنیم. ولی تنها تفاوتی که متغیر int ی که قبلا معرفی کردیم، وجود دارد اینست که یک جفت کروشه پس از int می نویسیم.

مثال:

int[] OurArray;

ولی آرایه جدولی ما در بالا، 4 سطر بیش تر ندارد. پس دستور بالا فقط به کامپایلر می گوید که ما قصد تنظیم یک array از نوع عدد صحیح (int) را داریم. این خط تعداد موقعیت هایی را که array باید حفظ کند، اعلام نمی کند. برای انجام کاری که گفته شد، باید یک array object جدید تنظیم کنیم. همانند چیزی که برای تعریف شی از یک نوع کلاس در بخش قبلی دیدیم.

برای مشخص کردن تعداد موقعیت های آرایه به ترتیب زیر عمل می کنیم:

OurArray = new int[5];

شما با نام array شروع کرده اید که با علامت تساوی دنبال می شود. پس از علامت تساوی به لغت کلیدی new و سپس مجددا نوع داده ی خود، نیاز دارید. پس از نوع داده یک جفت کروشه قرار می گیرد. بین کروشه ها نیاز به اندازه ی array دارید. اندازه در واقع تعداد موقعیت هایی است که array باید حفظ کند.

برای ساده تر و خلاصه تر نوشتن می توانید دو خط کد بالا را به صورت زیر نیز بنویسید:

int[] OurArray = new int[5];

عدد 5 معرف تعداد خانه های آرایه است. یعنی ما 5 خانه داریم که از شماره 0 تا 4 هستند. دقت نمایید که شماره 5 قابل استفاده نیست.

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

از آنجایی که ما یک array مقدار صحیح تنظیم کرده ایم، مقادیر پیش فرض برای همه ی 5 موقعیت 0 خواهد بود.

حال سوالی که پیش می آید اینست که ستون دوم در جدول بالا که مربوط به مقادیر هر سطر آرایه است را چگونه معرفی کنیم؟

کد زیر باعث می شود که به سطر اول از آرایه OurArray مقدار 8 را بدهیم. همان گونه که برای یک متغیر تکی int قبلا مقدار دهی میکردیم، در اینجا نیز به همین ترتیب پیش می رویم. تنها تفاوت اینست که شماره آن سطر یا خانه ای که می خواهیم به آن مقدار بدهیم، را باید مشخص کنیم.

OurArray[0]=8;

برای مقدار دادن به بقیه سطرها یا خانه های آرایه نیز به همین ترتیب عمل می کنیم:

OurArray[1]=4;
OurArray[2]=6;
OurArray[3]=5;
OurArray[4]=2;

روش دیگر مقدار دهی به آرایه به صورت زیر است:

int OurArray2[]={5,4,8,6};

این نوع تعریف به صورت اتوماتیک خودش تعداد خانه های آرایه را تعیین می کند. که در مثال بالا همانند اینست در واقع [3]OurArray2 است. یعنی 4 خانه که از شماره 0 تا سه هستند.

این متود در حال تنظیم یک array با استفاده از کروشه ها بعد از علامت تساوی، می باشد. در بین کروشه ها مقادیری را تایپ می کنید که array خواهد گرفت. اولین مقدار در موقعیت 0 و دومین مقدار در موقعیت 1 و غیره خواهد بود. توجه داشته باشید که هنوز پس از int نیاز به کروشه دارید، اما نیازی به لغت کلیدی new یا تکرار نوع داده و یا کروشه ها ندارید.

می توانید یک آرایه از انواع متغیرهای دیگر نیز تعریف نمایید. مثلا برای متغیر String می توان آرایه ای شبیه به زیر را تعریف نمود و سپس مقدار دهی کرد:

String month[]={"mehr","aban","azar","dey","bahman","esfand"};

با استفاده از تعریف بالا یک آرایه با تعداد 6 خانه که از شماره 0 تا 5 هستند، معرفی شده و سپس مقدار دهی می شود.

برای گرفتن خروجی از آرایه به سادگی میتوانید با مشخص کردن خانه آن آرایه، از آن خروجی بگیرید.

System.out.print(month[4]);

کد بالا خروجی “bahman” را چاپ می کند، زیرا به خانه شماره 4 آرایه اشاره می کند.