آرایه ها در جاوا - قسمت دوم
پارامتر و مقدار برگشتی از نوع آرایه
از آنجا که آرایه ها شی هستند، آنها را می توان به صورت پارامتر به متدها ارسال کرد. متد زیر یک آرایه از نوع int گرفته و مجموع عناصر آن را برمی گرداند.
public int sum(int [] numbers) {
int total = 0;
for(int k : numbers) {
total += k;
}
return total;
}
می توان در متد بالا به جای for-each از for یا while نیز استفاده کرد (به عنوان تمرین انجام دهید).
همچنین نوع برگشتی یک متد می تواند از نوع آرایه باشد. متد زیر یک آرایه دریافت کرده و کمترین و بیشترین مقدار آن را به صورت آرایه برمی گرداند.
public int [] minMax(int [] numbers) {
int min = numbers[0];
int max = numbers[0];
for(int k : numbers) {
if(k < min) {
min = k;
} else if(k > max) {
max = k;
}
}
int [] results = {min, max};
return results;
}
در کد بالا از مقدار دهی اولیه استفاده شده است. به جای این روش می توان از روش اندیس عناصر آرایه results را مقدار دهی کرد (این روش را پیاده سازی کنید).
آرایه هایی از اشیاء
تا کنون آرایه های تعریف شده از نوع int بود. دیگر انواع ابتدایی (primitive) نیز به همین صورت است. حال می خواهیم آرایه هایی از اشیاء تعریف کنیم. در کد زیر آرایه ای از نوع رشته تعریف و مقدار دهی اولیه شده است.
String [] names = {"Ali", "Reza", "Hasan"};
دیاگرام شی برای آرایه names به صورت زیر است.
حال می خواهیم آرایه ای از دانشجویان ایجاد کنیم. فرض می کنیم کلاس Student تعریف شده است.
Student [] students = new Student[5];
سوال: به کد فوق خوب دقت کرده و بگویید چند دانشجو ایجاد شده است؟
5 تا؟ درست نیست! در واقع هیچ دانشجویی ایجاد نشده است. فقط یک آرایه از Student ایجاد شده که هنوز "خالی" است. در ضمن اگر دقت کنید سازنده ی Student اصلاً فراخوانی نشده است (همان طور که می دانید سازنده به ( ) ختم می شود). با این فرض که سازنده ی Student نام دانشجو را به عنوان پارامتر دریافت می کند، در ادامه آرایه students را "پر" می کنیم.
students[0] = new Student("Ali");
students[1] = new Student("Reza");
students[2] = new Student("Hasan");
students[3] = new Student("Hosein");
students[4] = new Student("Taghi");
تمرین تحویلی: دیاگرام شی را برای آرایه Student در paint رسم کنید. فرض کنید Student یک فیلد با نام name از نوع String و فیلدی دیگر با نام average از نوع double دارد.
تمرین: کد های بالا را در BlueJ یا netbeans وارد کنید و در یک حلقه لیست دانشجوها را چاپ کنید.
مهلت ارسال: سه شنبه 5 فروردین 93 ساعت 21
با تاخیر: X
تنها تمرین ارسالی تمرین دیاگرام شی است و بقیه از نوع مثلث برعکس هستند.
پایان قسمت دوم.
موفق باشید.
- ۹۲/۱۲/۲۷