ورود

View Full Version : آموزش: اشکالی دراستفاده از آرایه



Rahmati92
پنج شنبه 07 فروردین 1393, 19:54 عصر
سلام دوستان
من یه آرایه از یک کلاس با دستور زیر ایجادکردم
student[] stu=new student[10];
این کلاسstudentچندتافیلدprivate مثلfamilyداره
حالا من میخوام یه فامیل خاص رو تو ارایه بالاپیداکنم...میشه کمکم کنید؟؟؟
میدونم باید آرایه و قسمت family رو سرچ کنم اما نمیدونم چه جوری؟:ناراحت::ناراحت::ناراح :

vahid-p
جمعه 08 فروردین 1393, 14:55 عصر
چون فیلد family این کلاس private است پس یک متد getter باید برای این فیلد داشته باشید تو کلاس Student. بد نیست یک متد هم برای اسم کوچکش داشته باشیم پس :
public String getFamily(){
return family;
}
public String getFirstName(){
return firstname;
}

خب حالا شما کافیه تو برنامتون یه تابع بنویسید که یک آرایه رو بگیره و فیلد family ایش رو چک کنه.
مثلا :
public String findFamily(Student[] students,String name){
for(Student s:students){
if(s.getFamily().contains(name)){
return s.getFirstName+" "+s.getFamily;
}
}
return null;
}
البته اون حلقه for که برای آرایه ها و لیست ها هست میتونی به صورت for معمولی هم بنویسی. اگر آشنایی نداری با این نوع for از این استفاده کن :
for(int i=0;i<students.length;i++){
if(students[i].getFamily().contains(name)){
return students[i].getFirstName()+" "+students[i].getFamily;
}
}
این متد آرایه و فامیلی ( که از name استفاده شده ) که میخوای جستجو کنی رو میگیره. از متد contains برای سرچ یک رشته در یک رشته دیگه استفاده کردم تا احیانا اگر فاصله یا فامیلی طولانی تر بود هم جواب درست رو بهت بده و کافیه فقط فامیلی که وارد کردی با بخشی از رشته فامیلی اصلی فیلد عنصر آرایه برابر باشه. اگر میخوای عینا یکی باشند و فاصله و... هم در نظر گرفته بشه از equals به جای contains استفاده کن.

در پایان اگر یافت شد، فیلدهای نام و نام خانوادگی عنصر آرایه رو بهت میده و در غیر این صورت null رو بر میگردونه. پس با یک if ساده میتونی این موضوع رو چک کنی. البته برای آرایه بهتره شماره خونه آرایه رو برگردونی تا بعد از اون به راحتی به تمام فیلدهاش بتونی دسترسی داشته باشی ولی اینطوری کل اطلاعاتی که بدست میاری فقط در یک String برگردونده میشه. به هر حال ایناش به خودت و توقعی که ازش داری برمیگرده. خب حالا چک میکنیم که null هست یا نه :
String findedFamily=findFamily(student, "xyz");
if(findedFamily!=null){
System.out.println("Student is "+findedFamily);
}else{
System.out.println("There aren't any students with this family name. please try again ...");
}

vahid-p
جمعه 08 فروردین 1393, 14:57 عصر
پست تکراری . حذف شود

vahid-p
جمعه 08 فروردین 1393, 15:02 عصر
پست تکراری . حذف شود

Rahmati92
جمعه 08 فروردین 1393, 18:14 عصر
واقعا ممنون