0

آموزش برنامه نویسی جاوا

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی جاوا- قسمت ۲۸: به کارگیری Array های چند بعدی یا Multidimensional
سه شنبه 1 بهمن 1392  8:18 AM

همانطور که در آموزش قسمت بیست و هفتم توضیح داده شد، Array ها به منظور ذخیره سازی اطلاعاتی مورد استفاده قرار می گیرند که همگی به یک نوع متغیر اختصاص دارند. حال چنانچه تعداد Element ها یا همان مواردی که در یک Array قرار می گیرند خیلی زیاد نباشند می توان نحوه نوشتن Array را تغییر داد تا کد ما خلاصه تر گردد. در حقیقت روشی که در جلسه آموزشی بیست و هفتم توضیح داده شد برای مواردی کاربرد دارد که تعداد عناصر Array ها بسیار زیاد باشند مثلا 200 مورد.

ادامه مطلب را از دست ندهید.

به منظور خلاصه نویسی Array ها در ابتدا یک پروژه جدید تحت عنوان 28th Session به معنی جلسه "بیست و هشتم" ایجاد کرده و کلاسی با StuffToBuy به معنی "چیزهایی که بایستی خریداری شود" می گذاریم. سپس یک Array از جنس String در آن ایجاد می کنیم و نام آن را items به معنی "موارد" می گذاریم. حال کد ما می بایست به صورت زیر باشد:


  1. public class StuffToBuy {
  2. public static void main(String[] args) {
  3. String[] items = {};
  4. }
  5. }

همانطور که ملاحظه می شود در آموزش پیشین نحوه ساخت یک Array به این صورت بود که پس از علامت مساوی از کلید واژه new استفاده کرده سپس مجدداً نوع متغیر را نوشته و در داخل علامت [] تعداد Element هایی را نوشته که می خواهیم داشته باشیم. اما در اینجا از آنجا که می خواهیم عددی را تعریف نکنیم و مستقیماً نام Element ها یا عناصر تشکیل دهنده Array را وارد کنیم از علامت {} پس از مساوی استفاده می کنیم. حال فرض کنیم که نیاز داریم تا نان، پنیر، کره، چای، سیب زمینی، گوجه، پیاز، قهوه، دوغ و آب معدنی در لیست خرید ما باشد. برای این منظور کد فوق را به شکل زیر تکمیل می کنیم:

  1. public class StuffToBuy {
  2. public static void main(String[] args) {
  3. String[] items = {"Bread", "Cheese", "Butter", "Tea", "Potato",
  4. "Tomato", "Onion", "Coffe", "Yogurt Drink", "Mineral Water"};
  5. }
  6. }

در واقع از آنجاییکه عناصر تشکل دهنده Array ما از جنس string هستند، از اینرو نیاز است تا این عناصر را داخل علامت “ “ قرار دهیم و آنها را با یک کاما از یکدیگر جدا سازیم. حال چنانچه بخواهیم نام یکی از این عناصر را روی صفحه نمایش نشان دهیم صرفاً لازم است تا در دستور System.out,println(); نام Array را نوشته و در داخل علامت [] شماره مورد مد نظر را بنویسیم. به طور مثال در لیست فوق اگر بخواهیم واژه Butter به معنی کره را در پنجره Console به نمایش در آوریم، صرفاً نیاز است تا عبارت items[2] را در داخل دستور System.out,println(); بنویسیم(در واقع از آنجا که شمارش این عناصر از صفر شروع می شود، نیاز است تا عدد 2 را وارد کنیم و چنانچه عدد 3 را وارد نماییم، واژه Tea نمایش داده خواهد شد). حال کد تکمیل شده ما به شکل زیر خواهد بود:

  1. public class StuffToBuy {
  2. public static void main(String[] args) {
  3. String[] items = {"Bread", "Cheese", "Butter", "Tea", "Potato",
  4. "Tomato", "Onion", "Coffe", "Yogurt Drink", "Mineral Water"};
  5. System.out.println(items[2]);
  6. }
  7. }

پس از اجرای برنامه، واژه Butter در پنجره Console به نمایش در خواهد آمد:

920431-j28-IMAGE 1.jpg

اگر چه که تعداد عناصر ما ده عدد است، اما اگر بخواهیم مورد شماره ده که Mineral Water به معنی آب معدنی است است را روی صفحه به نمایش در آوریم، می بایست عدد 9 را داخل [] وارد نماییم. و این در صوتی است که اگر عدد 10 را وارد نماییم، برنامه در حین Compile شدن از ما ایراد خواهد گرفت و عبارت ArrayIndexOutOfBoundsException به معنی اینکه شماره وارد شده خارج ای محدوده تعریف شده است نمایش داده خواهد شد.

نحوه شمردن تعداد Element ها داخل یک Array

چنانچه بخواهیم تعداد عناصری را که از این طریق وارد برنامه خود کرده ایم را شمارش کنیم، از متدی به اسم length استفاده می کنیم. برای این منظور کد فوق را به شکل زیر بازنوسی خواهیم کرد:

  1. public class StuffToBuy {
  2. public static void main(String[] args) {
  3. String[] items = {"Bread", "Cheese", "Butter", "Tea", "Potato",
  4. "Tomato", "Onion", "Coffe", "Yogurt Drink", "Mineral Water"};
  5. System.out.println(items.length);
  6. }
  7. }

در واقع فقط نیاز است تا در دستور System.out.println(); نام Array را نوشته و متد lenght را ضمیمه آن نماییم. حال پس از اجرای برنامه، تعداد عناصر داخل Array ما که معادل با 10 مورد است نمایش داده خواهد شد:

920431-j28-IMAGE 2.jpg

نحوه ایجاد Multidimensional Arrays

به طور خلاصه یک Array برای ذخیره سازی داده ها در یک Dimension یا "بعد" استفاده می شوند. حال اگر بخواهیم که یک Array ایجاد کنیم که چند بعدی باشد به طور مثال Array یی که در برگیرنده ستون و ردیف یک جدول باشد، می بایست از Multidimensional Array ها یا Array های چند بعدی استفاده کنیم. مثالی که این گونه Array ها در آن کاربرد فراوانی دارد نمودارهایی با محور های x و y می باشد. برای روشن شدن این مسئله، یک کلاس جدید تحت عنوان MultidimensionalArray ایجاد می کنیم و به شکل زیر آن را تکمیل می کنیم:

  1. public class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. int[] row = {};
  4. }
  5. }

در حقیقت این کد نشانگر یک Array تک بعدی یا عادی است. حال اگر بخواهیم آن را به یک Array چند بعدی تبدیل نماییم، می بایست آن را به شکل زیر تغییر دهیم:

  1. public class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. int[][] row = {{},{}};
  4. }
  5. }

به عبارت دیگر تنها با اضافه کردن یک علامت [] دیگر پس از نوع Array و همچنین اضافه کردن دو جفت علامت {} دیگر داخل علامت {} که پس از علامت مساوی قرار دارد و مجزا کردن آنها از یکدیگر بوسیله یک کاما ما یک Array دو بعدی ایجاد خواهیم کرد. حال کد فوق را به شکل زیر با اعدادی دلخواه تکمیل می کنیم:

  1. public class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. int[][] row = {{10, 20, 30}, {100, 200, 300}};
  4. }
  5. }

همانطور که مشاهده می شود، در Array دو بعدی فوق ما دو ردیف داریم که ردیف اول حاوی اعداد 10 و 20 و 30 است و ردیف دوم حاوی اعداد 100 و 200 و 300 است. حال نحوه فراخوانی یک عدد مد نظر از این Array دو بعدی به این شکل است که در کد زیر مشاهده می شود:

  1. public class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. int[][] row = {{10, 20, 30}, {100, 200, 300}};
  4. System.out.println(row[0][1]);
  5. }
  6. }

در حقیقت در دستور System.out.println(); نام Array را نوشته و از آنجا که Array ما دو بعدی است پس دو جفت [] مقابل آن قرار می دهیم. همانطور که قبلاً توضیح داده شد شمارش Array ها از صفر آغاز می شود و در این مثال هم ما دو ردیف بیشتر نداریم ردیف اول که {10,20,30} است و ردیف دوم که {100,200,300} و از آنجا که شمارش در Array ها از صفر آغاز می شود پس عدد اختصاص داده شده به ردیف اول صفر خواهد بود و عدد اختصاص داده شده به ردیف دوم یک است. در ردیف اول ما سه Element یا عنصر داریم که عدد 10 جایگاه صفر را دارا است، عدد 20 جایگاه یک و در نهایت عدد 30 جایگاه دو را دارا است. حال اگر بخواهم از ردیف اول عدد دوم را در پنجره Console به نمایش در آوریم، صرفاً نیاز است تا در دستور System.out.println(); پارامتر row[0][1] را وارد کنیم. پس از اجرای برنامه خروجی زیر را خواهیم دید:

920431-j28-IMAGE 3.jpg

به نظر می رسد با توضیحات فوق کاملاً این مسئله روشن شده باشد. حال برای آن که تمرین دیگری انجام داده باشیم قصد داریم تا از ردیف دوم عدد آخر که عدد 300 است رابه نمایش در آوریم. از آنجا که عدد اختصاص داده شده به ردیف دوم در این Array عدد یک است و از آن جا که عدد اختصاص داده شده به آخرین عدد ردیف دوم عدد دو است، پس کد خود را به شکل زیر بازنویسی می کنیم:

  1. public class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. int[][] row = {{10, 20, 30}, {100, 200, 300}};
  4. System.out.println(row[1][2]);
  5. }
  6. }

پس از اجرای برنامه خروجی زیر مشاهده خواهد شد:

920431-j28-IMAGE 4.jpg

در جلسه آموزشی آینده با نحوه Sort کردن یا مرتب کردن عناصر داخل Array ها آشنا خواهیم شد. لازم به ذکر است به منظور درک بهتر مطالب آموزشی جلسه آتی، آشنایی با مقدمات Array ها و هم چنین آشنایی به نحوه به کارگیری Loop ها ضروری است.

تشکرات از این پست
دسترسی سریع به انجمن ها