آموزش جاوا (فصل ۷)

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


در این آموزش به معرفی مفهوم Array یا «آرایه‌» و نحوۀ به‌کارگیری آن‌ به منظور ذخیرۀ داده‌های مورد نیاز در زبان برنامه‌نويسی جاوا می‌پردازیم. به طور کلی، آرایه‌ها در زبان جاوا به منظور ذخیره و نگهداری مجموعه‌ای از داده‌هایی با دیتا تایپ یکسان همچون داده‌هایی از جنس int یا عدد صحیح به کار می‌روند. در واقع، می‌توانیم با استفاده از آرایه‌ها به جای تعریف چندین متغیر و اختصاص داده‌های مورد نیاز به هر یک از آن‌ها، یک متغیر تعریف کرده و مجموعۀ داده‌های مورد نظر خود را بدان اختصاص دهیم که در چنین شرایطی یک متغیر قادر بر نگهداری گروهی از داده‌هایی با دیتا تایپیکسان می‌باشد.

در ادامه، به منظور آشنایی با کاربرد آرایه‌ها در زبان جاوا سناریویی بدین صورت تعریف می‌کنیم که در آن بتوانیم نام دوستان و آشنایان و شماره‌ تلفن مرتبط با ایشان را ذخیره کنیم و به اصطلاح یک دفترچۀ تلفن کوچک طراحی نماییم که به منظور کوتاه شدن سورس‌کد در این آموزش، صرفاً نام سه نفر از افراد فرضیِ مورد نظر خود را ذخیره خواهیم کرد.

چنانچه فرض کنیم که نام و شماره‌ تلفن دوستان خود را بدون استفاده از آرایه در برنامۀ خود ذخیره کنیم، برای نگهداری شماره‌ تلفن نیاز به تعریف سه متغیر با استفاده از دیتا تایپ int و برای تعریف نام افراد هم نیاز به ساخت سه آبجکت از روی کلاس String داریم اما این در حالی است که با به‌کارگیری آرایه‌ها می‌توانیم با استفاده از دیتا تایپ int یک آرایه به منظور ذخیرۀ شماره‌ تلفن افراد تعریف کرده و همچنین آبجکتی از روی کلاس String ساخته و مجموعه‌ای از نام‌ دوستان خود را در آن ذخیره نماییم که این امر منجر بدین می‌شود تا سورس‌کدی کوتاه و تمیز داشته باشیم.

در آموزش‌های پیش توضیح دادیم که برای ایجاد یک متغیر بدین صورت عمل می‌کنیم که دیتا تایپ مورد نظر را نوشته سپس نام متغیر را درج کرده و در ادامه یک علامت = قرار داده و بدین ترتیب مقدار اولیۀ مورد نظر را به متغیر خود اختصاص می‌دهیم و در نهایت هم یک علامت ; قرار می‌دهیم که به منزلۀ پایان دستور می‌باشد. نحوۀ تعریف آرایه نیز تا حدودی مشابه تعریف متغیر می‌باشد با این تفاوت که برای تعریف متغیر پس از دیتا تایپ مورد نظر علائم [ ] را درج کرده سپس عملگر = را قرار داده و در ادامه کیورد new را درج می‌کنیم که بدین ترتیب به کامپایلر جاوا دستور می‌دهیم که یک آرایۀ جدید برای‌مان ایجاد کند و در ادامه مجدداً دیتا تایپ مورد نظر را نوشته و داخل علائم [ ] داده‌های مورد نیاز را درج می‌کنیم که بدین ترتیب آرایه‌ای از جنس عدد صحیح داریم که به متغیری اختصاص داده شده‌ است.

در همین راستا، به منظور پیاده‌سازی سناریوی فوق پروژه‌ای جدید در محیط برنامه‌نویسی اکلیپس تحت عنوان ArrayIntro ساخته و یک کلاس به نام Array در آن ایجاد می‌کنیم و در ادامه به منظور تعريف متغيرهای مربوط به سناریوی این آموزش، قصد داریم تا دو متغیر تعریف کرده و آرایه‌ای از اعداد و همچنین استرینگ‌ها را به صورت زیر به آن‌ها اختصاص دهیم که در ابتدا با استفاده از دیتا تایپ int آرایه‌ای به صورت زیر به منظور ذخیرۀ نام افراد تعریف می‌کنیم:

public class Array {
    public static void main(String[] args) {
        int[] number = new int[3];
    }
}

در کد فوق، با استفاده از دیتا تایپ int آبجکتی جدید از نوع آرایه تحت عنوان number ایجاد کرده‌ایم که با استفاده از کیورد new به کامپایلر جاوا می‌گوییم تا آبجکتی از نوع آرایه به طول 3 بسازد و بدین ترتیب آرایه‌ای سه‌تایی به نام number داریم که می‌توانیم 3 مقدار از جنس عدد صحیح را بدان منتسب کنیم.

در آموزش‌های گذشته نیز اشاره کردیم که در شمارش و دسترسی به مقادیر اِلِمان‌های لیست، آرایه، کاراکترهای استرینگ و غیره همواره اولین جایگاه به عدد 0 تعلق دارد که در این آموزش نیز به همین ترتیب عمل کرده و اندیس 0 از آرایۀ فوق را به نفر اول، اندیس 1 را به نفر دوم و اندیس 2 را به نفر سوم اختصاص می‌دهیم که از همین روی به صورت زیر سه شماره‌ تلفن فرضی را برای هر یک از افراد مورد نظر خود در آرایۀ number ذخیره می‌نماییم:

public class Array {
    public static void main(String[] args) {
        int[] number = new int[3];
        number[0] = 91816122;
        number[1] = 91217945;
        number[2] = 91144423;
    }
}

همان‌طور که مشاهده می‌کنیم، به منظور اختصاص مقدار به هر یک از اندیس‌های آرایۀ number اندیس مورد نظر را داخل علائم [ ] مقابل نام آرایه و یک علامت = قرار داده و بدین ترتیب شماره‌ تلفن مورد نظر خود را بدان جایگاه اختصاص می‌دهیم و در نهایت یک علامت ; قرار می‌دهیم.

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

public class Array {
    public static void main(String[] args) {
        int[] number = new int[3];
        number[0] = 91816122;
        number[1] = 91217945;
        number[2] = 91144423;
        String[] name = new String[3];
        name[0] = "Iman";
        name[1] = "Aria";
        name[2] = "MohammadAli";
    }
}

همان‌طور که ملاحظه می‌کنیم، روش تعریف آرایه‌ای از جنس String نیز همانند دیتا تایپ int است که در ابتدای کد آن را توضیح دادیم با این تفاوت که برای ذخیره‌سازی مقادیر استرینگ‌ از علائم " " استفاده کرده‌ایم. در این مرحله کد ما تکمیل شده است و در ادامه دستوری به صورت زیر جهت نمایش نام افراد به همراه شمارۀ تلفن ایشان را به سورس‌کد اضافه می‌نماییم:

public class Array {
    public static void main(String[] args) {
        int[] number = new int[3];
        number[0] = 91816122;
        number[1] = 91217945;
        number[2] = 91144423;
        String[] name = new String[3];
        name[0] = "Iman";
        name[1] = "Aria";
        name[2] = "MohammadAli";
        System.out.println("My first friend is named " + name[0] + " and his phone number is " + number[0]);
    }
}

با اجرای برنامۀ فوق، هر یک از شماره‌ تلفن‌های مذکور به آرایهٔ number و در جایگاه مورد نظر ذخیره شده و در ادامه استرینگ‌های مربوط به نام افراد نیز در جایگاه مورد نظر از آرایهٔ‌ name ذخیره می‌شود سپس اِلِمان مربوط به اندیس 0 از آرایۀ name و همچنین اِلِمان مربوط به اندیس 0 از آرایۀ number به همراه استرینگ‌های فوق در کنسول چاپ می‌گردند. حال برنامۀ فوق را اجرا کرده به طوری که در خروجی خواهیم داشت:

My first friend is named Iman and his phone number is 91816122

در ادامه، به منظور چاپ نام و همچنین شماره‌ تلفن دو فرد دیگر نیاز است تا کد فوق را به صورت زیر تکمیل نماییم:

public class Array {
    public static void main(String[] args) {
        int[] number = new int[3];
        number[0] = 91816122;
        number[1] = 91217945;
        number[2] = 91144423;
        String[] name = new String[3];
        name[0] = "Iman";
        name[1] = "Aria";
        name[2] = "MohammadAli";
        System.out.println("My first friend is named " + name[0] + " and his phone number is " + number[0]);
        System.out.println("My second friend is named " + name[1]+ " and his phone number is " + number[1]);
        System.out.println("My third friend is named " + name[2] + " and his phone number is " + number[2]);
    }
}

حال برنامۀ فوق را مجدداً اجرا کرده و در خروجی خواهیم داشت:

My first friend is named Iman and his phone number is 91816122
My second friend is named Aria and his phone number is 91217945
My third friend is named MohammadAli and his phone number is 91144423

همان‌طور که می‌بینیم، هر یک از اِلِمان‌های درج‌شده در آرایه‌های name و number به همراه استرینگ متناظرشان در کنسول چاپ شده‌اند.  دانلود فایل‌های تمرین

آشنایی با آرایه‌های چندبُعدی در زبان برنامه‌نویسی جاوا


در آموزش قبل آموختیم که آرایه‌ها به منظور ذخیره‌سازی مجموعۀ داده‌هایی با نوع دادۀ یکسان مورد استفاده قرار می‌گیرند اما در این آموزش به بررسی این موضوع خواهیم پرداخت که چگونه می‌توانیم داده‌های مورد نظرمان را در آرایه‌های چندبُعدی ذخیره‌سازیم؛ به عبارتی، آرایه‌ای از آرایه‌ها که به منظور کوتاه کردن سورس‌کد و همچنین سادگی ذخیرۀ داده‌ها در مواردی به کار گرفته می‌شوند که نیاز به نگهداری داده‌های بسیاری نداشته باشیم.

به منظور درک بهتر نحوۀ تعریف آرایه‌های یک‌بُعدی یا عادی و همچنین تفاوت آن‌ها با آرایه‌های چندبُعدی، در ابتدا یک پروژۀ جدید تحت عنوان Arrays ایجاد کرده و کلاسی به نام OneDimensionalArray داخل آن می‌سازیم و سپس با استفاده از دیتا تایپ String آرایه‌ای در آن ایجاد می‌کنیم تا نام آیتم‌های مورد نیاز را در آن ذخیره نماییم:

public class OneDimensionalArray {
    public static void main(String[] args) {
        String[] items = {};
    }
}

همان‌طور که ملاحظه می‌کنیم، برای ساخت آرایۀ مورد نظر ابتدا دیتا تایپ String را نوشته به دنبال آن علائم [ ] را درج کرده سپس نام items را برای آرایۀ خود در نظر گرفته‌ایم و در ادامه با استفاده از اپراتور = آرایه‌ای خالی به متغیرitems و بدون ذکر ابعاد آن اختصاص داده‌ايم (در صورتی که ابعاد مورد نظر برای آرایه‌ای ذکر نشود، می‌توان آیتم‌هایی به تعداد دلخواه بدان اختصاص داد.) 

همچنین توجه داشته باشیم که در این مثال و بر خلاف آموزش گذشته از کیورد new پس از عملگر = استفاده نکرده‌ایم چرا که به جای تعریف ابعاد مورد نظر برای آرایه، قصد داریم تا مستقیماً اِلِمان‌های آن را در آرایۀ مربوطه وارد نماییم و از همین روی پس از عملگر = علامت‌های { } را درج کرده و به صورت زیر آیتم‌های مورد نیاز را مستقیماً بدان منتسب می‌کنیم:

public class OneDimensionalArray {
    public static void main(String[] args) {
        String[] items = {"Bread", "Cheese", "Butter", "Tea", "Potato", "Tomato", "Onion", "Coffe", "Yogurt Drink", "Mineral Water"};
    }
}

در کد فوق عناصر تشکیل‌دهندۀ آرایه از جنس استرینگ بوده و از همین روی آن‌ها را داخل علائم " " قرار داده و به آرایۀ مربوطه منتسب کرده‌ و هر یک از آیتم‌ها را نیز با یک علامت , از یکدیگر مجزا ساخته‌ایم. حال چنانچه بخواهیم نام یکی از اِلِمان‌های تشکیل‌دهندۀ آرایه را در کنسول نمایش دهیم، صرفاً لازم است تا نام آرایه را نوشته و داخل علامت‌های [ ]در مقابل آن اندیس مربوط به اِلِمان مد نظر را درج نماییم و در ادامه دستور مربوطه را به عنوان آرگومان ورودی به متد()println پاس دهیم.

به طور مثال، در لیست فوق به منظور دسترسی به اِلِمان «Butter» و نمایش آن در کنسول، عبارت [items[2 را به متد()println پاس می‌دهیم. در واقع، شمارش اندیس عناصر آرایه از 0 شروع می‌شود و از همین روی به منظور دسترسی به اِلِمان سوم از اندیسی معادل عدد 2 استفاده می‌کنیم و با اجرای کد زیر می‌توانیم اِلِمان مرتبط با استرینگ «Butter» را در کنسول چاپ کنیم:

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

حال برنامۀ فوق را اجرا کرده و در خروجی خواهیم داشت:

Butter

همان‌طور که مشاهده می‌کنیم، عنصر سوم و مربوط به اندیس دوم از آرایۀ items در کنسول چاپ می‌شود. به علاوه، همان‌طور که می‌دانیم تعداد اِلِمان‌های آرایۀ فوق 10 عدد است که در چنین شرایطی اگر بخواهیم تا به آیتم دهم معادل استرینگ «Mineral Water» از آرایۀ فوق دسترسی پیدا کنیم، می‌باید عدد 9 را داخل علائم [ ] وارد نماییم مضاف بر اینکه ذکر عدد 10 در مقابل متغیر items داخل علائم [ ] منجر به بروز اروری در قالب عبارت «IndexOutOfBoundsException» در حین کامپایل برنامه می‌شود بدین معنی که اندیس واردشده خارج از محدودۀ تعریف‌شده می‌باشد.

نحوۀ شمردن تعداد اِلِمان‌های یک آرایه

به منظور شمارش تعداد عناصر تشکیل‌دهندۀ یک آرایه، به سادگی می‌توانیم از اتریبیوت length استفاده نماییم. در واقع، طول یک آرایه بعد از ساخت آن به هیچ عنوان تغییر نمی‌کند و از همين روی به منظور دسترسی به طول آن از اتریبیوتی از جنس final تحت عنوان length استفاده می‌کنیم چرا که در طول برنامه تغییر نکرده و ثابت باقی می‌ماند (در آموزشآشنایی با کلیدواژۀ final و کاربردهای آن در زبان برنامه‌نویسی جاوا به تفصیل مفهوم متغیرهای final، نحوۀ تعریف آن‌ها و همچنین تفاوت آن‌ها با متغیرهای عادی را تشریح نموده‌ایم.) حال به منظور دستیابی به اتریبیوت length کد فوق را به شکل زیر بازنویسی خواهیم کرد:

public class OneDimensionalArray {
    public static void main(String[] args) {
        String[] items = {"Bread", "Cheese", "Butter", "Tea", "Potato", "Tomato", "Onion", "Coffe", "Yogurt Drink", "Mineral Water"};
        System.out.println(items.length);
    }
}

در واقع، با به‌کارگیری اتریبیوت length پس از نام آرایۀ مد نظر، می‌توانیم به تعداد اِلِمان‌های آن دست پیدا کنیم که در کد فوق آن را به متد ()println پاس داده‌ایم تا نتیجۀ حاصل را در کنسول چاپ کند. حال پس از اجرای برنامه، تعداد اِلِمان‌های داخل آرایه در کنسول چاپ می‌شود به طوری که در خروجی داریم:

10

اکنون در ادامۀ آموزش قصد داریم تا به بررسی نحوۀ تعریف آرایه‌های چندبُعدی و تفاوت آن با آرایه‌های تک‌بُعدی بپردازیم.

نحوه ایجاد آرایه‌های چندبُعدی در زبان جاوا

همان‌طور که در ابتدای آموزش اشاره کردیم، آرایه‌ها برای ذخیره‌سازی داده‌ها در یک Dimension یا «بُعد» تعریف می‌شوند. همچنین به منظور تعریف آرایه‌ها از مفهوم Multidimensional Arrays یا «آرایه‌های چندبُعدی» نیز استفاده می‌شود که به صورت آرایه‌ای متشکل از چند آرایه يا آرایه‌ای در برگیرندۀ چند سطر و ستون تعریف می‌شوند که برای روشن شدن این مسئله، یک کلاس جدید تحت عنوان MultiDimensionalArray در پروژۀ Arrays ایجاد می‌کنیم و به صورت زیر آن را تکمیل می‌کنیم:

public class MultiDimensionalArray {
    public static void main(String[] args) {
        int[] row = {};
    }
}

در کد فوق، آرایه‌ای تک‌بُعدی یا عادی تحت عنوان row ساخته‌ایم که اگر بخواهیم آن را به یک آرایۀ چندبُعدی تبدیل نماییم، کد فوق را به شکل زیر تغییر می‌دهیم:

public class MultiDimensionalArray {
    public static void main(String[] args) {
        int[][] row = {{},{}};
    }
}

همان‌طور که مشاهده می‌کنیم، تنها با اضافه کردن یک جفت علامت [ ] دیگر پس از نوع دادۀ مربوط به آرایه و همچنین اضافه کردن دو جفت علامت‌های { } دیگر داخل علائم { } پس از علامت مساوی که با علامت , از هم جدا شده‌اند، آرایه‌ای دوبُعدی و متشکل از دو سطر تعریف کرده‌ایم. در ادامه، به روش زیر اعداد مد نظر خود را داخل آرایه ذخیره می‌کنیم:

public class MultiDimensionalArray {
    public static void main(String[] args) {
        int[][] row = {{10, 20, 30}, {100, 200, 300}};
    }
}

همان‌طور که مشاهده می‌کنیم، در آرایه دوبُعدی فوق دو سطر و سه ستون داریم که سطر اول حاوی اعداد 10، 20 و 30 بوده و سطر دوم حاوی اعداد 100، 200 و 300 می‌باشد. در این مرحله اگر بخواهیم به یکی از اِلِمان‌های ذخیره‌شده در آرایۀ دوبُعدیِ row دسترسی پیدا کنیم، به روش زیر عمل خواهیم کرد:

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

در کد فوق، ابتدا نام آرایه را نوشته و داخل هر یک از علائم [][] در مقابل آن به ترتیب شمارۀ سطر سپس شمارۀ ستون مرتبط با اِلِمان مد نظر را می‌نویسیم. همان‌طور که پیش‌تر توضیح دادیم، شمارش آرایه‌ها از اندیس 0 آغاز می‌شود و از همین روی در مثال فوق به منظور دسترسی به عدد مد نظر، اندیس‌گذاری را از عدد 0 آغاز کرده‌ایم که با پاس دادن آرگومانی به صورت [row[0][1 به متد ()println می‌توانیم به عدد 20 از آرایۀ فوق دست پیدا کنیم. حال پس از اجرای برنامه خروجی زیر را خواهیم داشت:

20

به عنوان مثالی دیگر، در آرایۀ row از مثال پیشین قصد داریم تا اِلِمان 300 از سطر دوم و ستون آخر را در کنسول چاپ کنیم که برای این منظور کد فوق را به شکل زیر بازنویسی می‌کنیم:

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

در واقع، اندیس مربوط به سطر دوم معادل عدد 1 بوده و اِلِمان 300 نیز در این سطر در جایگاه مربوط به اندیس 2 قرار دارد که بدین ترتیب ابتدا اندیس مربوط به سطر سپس اندیس مربوط به ستون را مقابل نام آرایه داخل هر یک از علائم []درج کرده و دستور [row[1][2 را به عنوان آرگومان ورودی به متد ()println پاس می‌دهیم تا پس از دستیابی به اِلِمان مد نظر آن را در کنسول چاپ نماید که پس از اجرای برنامه خروجی زیر را مشاهده خواهیم کرد:

300

همان‌طور که انتظار داشتیم، با به‌کارگیری اندیس‌هایی به صورت [row[1][2 در مقابل نام آرایه توانسته‌ایم تا به اِلِمان مرتبط با عدد 300 از سطر دوم و ستون سوم دسترسی یافته و در ادامه آن را در کنسول چاپ نماییم. دانلود فایل‌های تمرین

آشنایی با نحوۀ مرتب کردن مقادیر آرایه‌ها در زبان برنامه‌نویسی جاوا


در این آموزش قصد داریم تا نحوۀ Sort یا «مرتب کردن» اِلِمان‌های تشکیل‌دهندۀ یک آرایه را در زبان برنامه‌نویسی جاوا مورد بررسی قرار دهیم و برای این منظور نیاز است تا حتماً مباحث مربوط به آرایه‌ها در آموزش‌های پیشین را به خوبی درک کرده باشیم. حال جهت درک کاربرد مرتب‌سازی اِلِمان‌های تشکیل‌دهندۀ یک آرایه، سناریویی از دنیای واقعی را بدین صورت در نظر می‌گیریم که قصد داریم تا اسامی مربوط به بازیگران فیلمی همچون «جدایی نادر از سیمین» را مرتب کرده سپس در اختیار تیم فیلم‌برداری و مونتاژ قرار دهیم تا در تیتراژ پایانی نام بازیگران را بر اساس ترتیب اِعمال‌شده نمایش دهند. 

برای این منظور، یک پروژۀ جدید تحت عنوان ANaderSiminSeperation تعریف می‌کنیم و همچنین کلاسی به نامAlphabeticOrder در آن می‌سازیم. حال به منظور ذخیره‌سازی داده‌های مربوط به اسامی بازیگران نیاز به استفاده از کلاس String داریم تا بتوانیم یک آرایه از جنس String تعریف کنیم و از آنجایی که این فیلم شش بازیگر اصلی دارد، آرایه‌ای به طول 6 تعريف می‌کنیم:

public class AlphabeticOrder {
    public static void main(String[] args) {
        String[] castNames = new String[6];
    }
}

همان‌طور که در کد فوق ملاحظه می‌کنیم، ابتدا نوع دادۀ String را ذکر کرده و در ادامه علائم [] را قرار داده‌ایم سپس نام آرایه را castNames انتخاب کرده و در ادامه با به‌کارگیری کیورد new به کامپایلر دستور می‌دهیم تا آبجکتی جدید از جنس آرایه تحت عنوان castNames بسازد و با قرار دادن عدد 6 مقابل نوع دادۀ Stirng داخل علائم [] تعداد اِلِمان‌های آرایه را مشخص می‌کنیم. اکنون آرایه‌ای به طول 6 از جنس استرینگ داریم که در ادامه و در کد زیر اسامی تک‌تک بازیگران را بر اساس ترتیبی دلخواه وارد آن می‌کنیم:

public class AlphabeticOrder {
    public static void main(String[] args) {
        String[] castNames = new String[6];
        castNames[0] = "Zareyee Merila";
        castNames[1] = "Hosseini Shahab";
        castNames[2] = "Bayat Sareh";
        castNames[3] = "Moadi Peyman";
        castNames[4] = "Hatami Leila";
        castNames[5] = "Farhadi Sarina";
    }
}

همان‌طور که در کد فوق ملاحظه می‌کنیم، اول نام خانوادگی بازیگران سپس نام آن‌ها را در آرایۀ castNames وارد کرده‌ایم چرا که در این مثال می‌خواهیم تا اسامی بازیگران را بر اساس نام خانوادگی مرتب نماییم. در این مرحله نیاز به تعریف حلقه‌ای از جنس for داریم تا در هر بار تکرار آن بتوانیم اسامی بازیگران را بر اساس حروف الفبا یکی پس از دیگر نمایش دهیم و از همین روی یک حقله ایجاد کرده و پارامترهای آن را به صورت زیر تعریف می‌کنیم:

public class AlphabeticOrder {
    public static void main(String[] args) {
        String[] castNames = new String[6];
        castNames[0] = "Zareyee Merila";
        castNames[1] = "Hosseini Shahab";
        castNames[2] = "Bayat Sareh";
        castNames[3] = "Moadi Peyman";
        castNames[4] = "Hatami Leila";
        castNames[5] = "Farhadi Sarina";
        for (int number = 0; number < castNames.length; number++) {
        }
    }
}

در کد فوق، نقطۀ شروع حلقه را عدد 0 قرار داده و نقطۀ پایان را با استفاده از اتریبیوت length برابر با طول  آرایۀcastNames تعریف کرده‌ایم و در پارامتر سوم نیز گفته‌ایم در هر بار تکرار حلقه یک واحد به عدد پیشین اضافه شده و در صورت برقرار بودن شرایط حلقه نیز دستورات داخلی آن اجرا شوند. حال می‌خواهیم تا خروجی برنامه را در پنچرۀ کنسول به نمایش درآوریم و از همین روی کد فوق را به شکل زیر تکمیل می‌کنیم:

public class AlphabeticOrder {
    public static void main(String[] args) {
        String[] castNames = new String[6];
        castNames[0] = "Zareyee Merila";
        castNames[1] = "Hosseini Shahab";
        castNames[2] = "Bayat Sareh";
        castNames[3] = "Moadi Peyman";
        castNames[4] = "Hatami Leila";
        castNames[5] = "Farhadi Sarina";
        for (int number = 0; number < castNames.length; number++) {
             System.out.println((number+1) + ": " + castNames[number]);
        }
    }
}

با اجرای برنامۀ فوق، هر یک از استرینگ‌های مرتبط به نام بازیگران به ترتیب به اندیس‌های 0 تا 5 از آرایۀ castNamesاختصاص داده می‌شوند و با اجرای حلقۀ for نیز مقدار اولیۀ 0 به متغیر number اختصاص یافته و شرط حلقه چک می‌شود بدین صورت آیا مقدار منتسب به متغیر number کمتر از طول آرایه است که شرط true ارزیابی شده و از همین روی دستورات داخلی حلقه اجرا می‌شوند که در آن گفته‌ایم ابتدا محاسبات ریاضیاتی داخل پرانتز معادل افزایش یک واحدیِ مقدار متغیر number برابر با عدد 0 انجام شده سپس این مقدار با کاراکتر «:» کانکت شده و در ادامه اِلِمان مربوط به اندیس 0 از آرایۀ castNames با آن‌ها کانکت شده و در کنسول چاپ شوند (افزایش یک واحدیِ مقدار متغیر number بدین دلیل انجام می‌شود تا اسامی بازیگران با شروع از عدد 1 در کنسول چاپ شوند.)

در ادامه، حلقۀ for تکرار شده و مقدار قبلیِ منتسب به متغیر number معادل عدد 1 یک واحد افزایش پیدا کرده و عدد 2 بدان اختصاص داده می‌شود سپس مجدداً شرط حلقه چک می‌شود که این بار نیز شرط برقرار است چرا که عدد 2 از طول آرایه معادل عدد 6 کوچک‌تر است و از همین روی دستورات داخلی حلقه اجرا شده و نام بازیگر دوم مربوط به اندیس 1 با شمارۀ 2 کانکت شده و در کنسول چاپ می‌گردد و اين فرآيند تا رسيدن مقدار متغير number به عدد 6 تكرار می‌شود که با اجرای برنامه در خروجی خواهیم داشت:

1: Zareyee Merila
2: Hosseini Shahab
3: Bayat Sareh
4: Moadi Peyman
5: Hatami Leila
6: Farhadi Sarina

همان‌طور که ملاحظه می‌کنیم، اسامی بازیگران به همان ترتیبی که نوشته شده بودند در بخش کنسول به نمایش درآمده‌اند و شمارۀ ردیف‌ها نیز از عدد 1 شروع می‌شود اما لیست فوق بر اساس حروف الفبا مرتب نشده است که برای این منظور نیاز به فراخوانی متد ()sort از کلاس Arrays داریم که می‌باید کد خود را به صورت زیر تکمیل کنیم:

import java.util.Arrays;
public class AlphabeticOrder {
    public static void main(String[] args) {
        String[] castNames = new String[6];
        castNames[0] = "Zareyee Merila";
        castNames[1] = "Hosseini Shahab";
        castNames[2] = "Bayat Sareh";
        castNames[3] = "Moadi Peyman";
        castNames[4] = "Hatami Leila";
        castNames[5] = "Farhadi Sarina";
        Arrays.sort(castNames);
        for (int number = 0; number < castNames.length; number++) {
             System.out.println((number+1) + ": " + castNames[number]);
        }
    }
}

در کد فوق، پیش از شروع حلقۀ for متد ()sort از کلاس Arrays را فراخوانی کرده‌ایم که برای دسترسی به این کلاس نیز ابتدا باید آن را در برنامه‌ ایمپورت کنیم. بنابراین مشابه آموزش‌های پیشین و به منظور فراخوانی کلاسی از پیش تعریف‌شده در زبان برنامه‌نویسی جاوا، به سه روش می‌توانیم عمل کنیم که عبارتند از ایمپورت کردن کلاس Arrays به صورت دستی، قرار دادن نشانگر ماوس روی واژۀ Arrays و انتخاب گزینۀ مرتبط با ایمپورت این کلاس و همچنین فشردن هم‌زمان کلیدهای Ctrl + Shift + O که در نهایت انتخاب هر یک از سه روش مذکور منجر به اضافه شدن دستور سطر اول به ابتدای برنامه می‌شود (لازم به یادآوری است که بسته به تنظیمات ادیتور، ممکن است کلیدهای ترکیبی فوق متفاوت باشند.)

حال پس از دسترسی به کلاس Arrays و فراخوانی متد ()sort در ادامه آرایۀ castNames را به عنوان آرگومان ورودی به متد مذکور می‌دهیم تا بدین ترتیب متد ()sort روی اِلِمان‌های این آرایه اِعمال شده و آن‌ها را بر اساس حروف الفبای انگلیسی از A تا Z مرتب کرده و در نهایت اِلِمان‌های مرتب‌شده را مجدداً به آرایۀ castNames منتسب کند. نکتهدر زبان برنامه‌نویسی جاوا عملکرد متد ()sort بدین شکل است که حروف الفبا را از A تا Z مرتب کرده و در مورد اعداد هم آن‌ها را به صورت صعودی مرتب می‌کند.

در ادامه، حلقۀ for در کد فوق اجرا شده و هر یک از اِلِمان‌های آرایه مذکور با شروع از عدد 1 و بر اساس ترتیب حروف الفبای انگلیسی در خروجی چاپ می‌شوند به طوری که با اجرای مجدد برنامه در خروجی خواهیم داشت:

1: Bayat Sareh
2: Farhadi Sarina
3: Hatami Leila
4: Hosseini Shahab
5: Moadi Peyman
6: Zareyee Merila

همان‌طور که ملاحظه می‌کنیم، نام‌های خانوادگی بر اساس حروف الفبا مرتب شده‌ و بر همین اساس نیز با شروع از عدد 1 تا 6 در کنسول چاپ شده‌اند. دانلود فایل‌های تمرین

آشنایی با نحوۀ جمع کردن اِلِمان‌های یک آرایه با یکدیگر در زبان برنامه‌نویسی جاوا


در آموزش گذشته به بررسی نحوۀ مرتب‌سازی اِلِمان‌های یک آرایه با فراخوانی متد ()sort پرداختیم اما در این آموزش قصد داریم تا ببینیم چگونه می‌توان اِلِمان‌های داخلی یک آرایه را با یکدیگر جمع کرد که برای درک بهتر این موضوع سناریویی بدین صورت تعریف می‌کنیم که در آن برنامه‌ای می‌نویسیم تا بتوانیم میانگین درآمد ماهیانۀ سال گذشته خود را محاسبه نماییم.این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

به طور کلی، در این آموزش به بررسی نحوۀ پیمایش اِلِمان‌های آرایه با به‌کارگیری حلقۀ for و جمع کردن هر یک از اِلِمان‌ها با یکدیگر پرداخته و در ادامه حلقه‌های به اصطلاح Enhanced را معرفی نمودیم به علاوه اینکه تفاوت‌های این حلقه‌ها با حلقه‌های for عادی را تشریح نمودیم. در پایان، لازم به یادآوری است که برای پیاده‌سازی سناریوی مطرح‌شده در این آموزش روش‌های بسیاری وجود دارد اما به دلیل درک نحوۀ جمع کردن اِلِمان‌های آرایه راه‌کار ارائه‌شده در این آموزش به کار گرفته شد. دانلود فایل‌های تمرین



مطالب مرتبط

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *