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


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

حال فرض کنیم که می خواهیم یک برنامه دفترچه تلفن بنویسیم که در آن بتوانیم به راحتی نام و شماره تلفن دوستان و آشنایان را در برنامه خود ذخیره کنیم (در این برنامه قصد داریم برای کوتاه شدن توضیحات، فرض کنیم که ما سه دوست بیشتر نداریم.) اگر بخواهیم نام و شماره تلفن این سه دوست خود را در متغیرها ذخیره سازیم، مجبور خواهیم بود سه متغیر از جنس int برای ذخیره سازی شماره تلفن ها و همچنین سه شیء از روی کلاس String برای ذخیره سازی نام دوستان خود تعریف کنیم. اما با استفاده از آرایه ها، خواهیم توانست هر سه شماره تلفن را در یک آرایه از جنس int و هر سه نام را در آرایه دیگری از جنس String ذخیره ساخته و کد خود را کوتاه تر و تمیز تر سازیم.

برای این منظور پروژه ای جدید در محیط برنامه نویسی اکلیپس تحت عنوان ArrayIntro ساخته و یک کلاس به نام Array در آن ایجاد می کنیم. همان طور که قبلاً توضیح داده شد، کامنت های اضافی را از درون کد خود حذف می کنیم و شروع به کدنویسی می کنیم.

پیش از این توضیح دادیم که برای ایجاد یک متغیر، ما نیاز داریم تا نوع متغیر را نوشته، سپس نام در نظر گرفته شده برای آن و پس از قرار دادن علامت مساوی یک مقدار برای آن در نظر بگیریم و در نهایت یک علامت ; قرار می دهیم. به عبارت دیگر متغیر ما به شکل ;int number = 12 خواهد بود. نحوه ایجاد آرایه ها هم تا حدودی به همین نحو است اما با کمی تفاوت. به طور مثال، برای تبدیل یک متغیر به یک آرایه می بایست پس از نوع متغیر که در مثال فوق int است علامت های [ ] را قرار دهیم. در واقع این علامت به کامپایلر جاوا دستور می دهد که با یک آرایه طرف است. در نهایت برای این که یک آرایه ی کامل داشته باشیم، می بایست به نحو زیر عمل کنیم:

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

در این کد، ما یک آرایه از جنس int تحت عنوان number به معنی "عدد" ایجاد کرده ایم. حال پس از علامت مساوی از کلید واژه ی new استفاده کرده ایم که به این معنی است که یک آرایه جدید برای ما ایجاد کن. در ادامه، نوع متغیر را به همراه علامت های [ ] نوشته و در انتها یک ; قرار می دهیم.

از آنجاکه ما سه دوست بیشتر نداریم، داخل علامت های [ ] دوم عدد 3 را می نویسم. به طور خلاصه این آرایه سه داده از جنس عدد صحیح را در خود ذخیره خواهد ساخت. اگر خاطرمان باشد در آموزش های گذشته زمان یکه از کلاس Random استفاده کردیم به موردی این چنین برخوردیم که در آن کلاس اگر عددی مثلاً 100 را به عنوان طیفی از اعداد تعریف کنیم که برنامه از آن میان یک عدد را به طور تصادفی بیرون بکشد، طیف ما از عدد 0 تا عدد 99 را شامل می شد. در مورد آرایه ها هم مسئله به همین صورت است چرا که در آرایه ها اولین جایگاه برای ذخیره ی داده به عدد 0 اختصاص داده می شود. حال ما سه دوست داریم که شماره تلفن دوست اول در جایگاه صفر و شماره تلفن دوست دوم در جایگاه یک و در نهایت شماره تلفن دوست سوم در جایگاه دوم ذخیره خواهد شد.

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

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

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

در کد فوق همان طور که مشاهده می شود به منظور اختصاص دادن مقداری به مواردی که در آرایه تعریف شده است، نام آرایه را به همراه جایگاه آن مثلا [0] نوشته و پس از علامت مساوی مقداری برای آن در نظر می گیریم و در نهایت یک علامت ; قرار می دهیم.

حال قصد داریم تا نام سه دوست خود را در یک آرایه ی دیگر ذخیره سازیم. از آنجا که تعدادی کاراکتر پشت سرهم تشکیل یک استرینگ را می دهند و برای ذخیره سازی داده هایی از نوع استرینگ ها می بایست از کلاس 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] = "Mohammad Ali";
    }
}

همان طور که ملاحظه می شود، روش ایجاد یک آرایه از جنس 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] = "Mohammad Ali";
        System.out.println("My first friend is named " + name[0]
        + " and his phone number is " + number[0]);
    }
}

در کد فوق تنها بخشی که اضافه شده است دستور ;()System.out.println است که وظیفه آن نمایش اطلاعات داخل پنجره ی کنسول است. حال جمله ی My first friend is named به معنی "نام اولین دوست من هست" را نوشته سپس با استفاده از علامت + داده ای را که برای اولین جایگاه در آرایه مربوط به نام دوستان ایجاد کرده بودیم را اضافه می کنیم. سپس یک علامت + دیگر قرار داده و عبارت and his phone number is به معنی "و شماره تلفن او هست" را به جمله پیشین اضافه می کنیم (همان طور که قبلاً توضیح داده شد، برای ارسال جمله ای به خط بعد از دستور n\ استفاده می کنیم.) مجدد یک علامت + قرار داده و داده مربوط به شماره تلفن اولین دوست را اضافه می کنیم. پس از اجرای برنامه خروجی زیر مشاهده خواهد شد:

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

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] = "Mohammad Ali";
        System.out.println("My first friend is named " + name[0]
        + " \nand his phone number is " + number[0]);
        System.out.println("My first friend is named " + name[1]
        + " \nand his phone number is " + number[1]);
        System.out.println("My first friend is named " + name[2]
        + " \nand his phone number is " + number[2]);
    }
}

پس از اجرای مجدد برنامه، خروجی برنامه همانند تصویر زیر خواهد بود:

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

دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
ho3ein
ho3ein
چگونه میتونیم که یک ارایه ی ده عنصری از اعداد صحیح تصادفی پر کرده سپس کل ارایه ها را چاپ کنیم. به گونه ای که اعداد تکراری نداشته با شیم
shanda
shanda
import java.util.Scanner;
public class FirstProgram {
public static void main(String[] args){
int i;
int[] number=new int[3];
String[] name=new String[3];
Scanner take=new Scanner(System.in);
for(i=0;i<3;i++){
System.out.print("Enter Your Name Of Contact = ");
name[i]=take.next();
System.out.print("Enter Your Number Of Contact = ");
number[i]=take.nextInt();
}
for(i=0;i<3;i++)
System.out.print(name[i] + " = " + number[i]);
}
}
وقتی برنامه رو اجرا میکنم بعد از یک بار اجرای حلقه اول با این ارور مواجه میشم
Exception in thread "main" java.util.InputMismatchException: For input string: "0938233"
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at FirstProgram.main(FirstProgram.java:14)
مشکل کجاست ؟؟؟

jalal
jalal
مشکل خاصی نداره فقط باید به جای int از long استفاده کنی:
long [] number = new long[3];
number[i]=take.nextlong();

در پاسخ به

mortal
mortal
سلام و خسته نباشید.آیا راهی وجود داره که نخوایم تک تک نامها و شماره ها رو جداگانه چاپ کنیم؟
مثلا یه حلقه ی for بزنیم؟
متشکرم
vena
vena
ممنون از اموزش عالیتون.یه سوال داشتم
اگه بخوایم یه دفتر تلفن بنویسیم که وقتی نام شخص رو وارد کنیم شمارش رو به ما بده
می توان از کلاس اسکنر در آرایه ها استفاده کرد؟
یا فقط باید از کلاس اسکنر و دستور سوییچ استفاده کنیم؟
aliireza
aliireza
میشه بگید اسم کاراکتر [ ] چی هستش باتشکر
ادمین سایت
ادمین سایت
با سلام
این کاراکترهای به ترتیب right bracket و left bracket نامیده می شوند

ارادتمند
تیم سکان آکادمی

در پاسخ به

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

در پاسخ به

aliireza
aliireza
خیلی ممنون

در پاسخ به

javad
javad
سلام وخسته نباشید،خب راهکار اینکه بتونیم شماره تلفن رو کامل بنویسیم چیه؟
CIna Deuxshiri
CIna Deuxshiri
سلام. لطف کنید دقیق سوالتون و مطرح کنید. من آموزش و یادم نیست.

در پاسخ به

javad
javad
در رابطه با همین بخش آموزش وقتی میخای شماره مبایل رو کامل بنویسی ارور میده،
int[] number = new int[3];
number[0] = 91816122;

در پاسخ به

CIna Deuxshiri
CIna Deuxshiri
سلام. شما داده‌ی اولیه رو از نوع long تعریف کنید و بعد در آخر شماره‌ای که قرار می‌دهید، از یک L (حرف بزگ انگلیسی) استفاده کنید.

در پاسخ به

hadimotamedi44
hadimotamedi44
خیلی ممنون از راهنماییتون

در پاسخ به

کاربر میهمان
کاربر میهمان
با سلام و خسته نباشی فراوان
من وقتی کد های مربوط به این بحث(ارایه ها ) وارد اکلیپس میکنم این اخطار رو در جواب برنامه بهم میده
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at eeeee.Mm.main(Mm.java:14)
لطفا راهنمایی کنید
با سپاس فراوان/
ApA
ApA
باسلام و تشکر فراوان از پشتیبانی عالی و مطالب فرارتر از عالیتان
می شود کاربر خودش تعداد آرایه ها را تنظیم کند؟
اگر می شود کدش را برایم ایمیل کنید و یا در جواب همین سوال برایم بنویسیدش.
بازهم تشکر
کاربر میهمان
کاربر میهمان
می تونید به جای int از نوع long استفاده کنید.
عیسی پور
عیسی پور
عالی بود لایک
امیرحسین مختاری
امیرحسین مختاری
برای منم همین مشکل هست در وارد کردن شماره این ارور رو میده
The literal 9185566565 of type int is out of range
کاربر میهمان
کاربر میهمان
سلام ایمان جان. یه متغیر int فقط میتونه تا عدد 2,147,483,647 رو تو خودش ذخیره کنه و وقتی عدداز این مقدار بزرگتر بشه اون اروری که نوشته رو میده.
کاربر میهمان
کاربر میهمان
تشکر از کار زیباتون
من یه مشکلی دارم و اون اینه که در قسمت مقدار دهی به آرایه number کمپایلر ارور integer number too large رو میده چکارش باید بکنم؟