چطور میشه سن تمام کاربران رو در یک Array list باهم جمع کرد ؟ (حل شد)
سلام دوستان
فرض کنید یک Arraylist داریم که در کلاس G به این صورت معرفی شده
public static ArrayList<StructAge> Ages = new ArrayList<StructAge>();
حالا داخل StructAge یک تکست ویو داریم به اسم public int Age
حالا اگر در برناممون یک دکمه آمار داشته باشیم که با کلیک روی اون به یک اکتیویتی جدید بریم که آمار مختلف برنامه رو نشون میده، و یکی از اون آمار، جمع کل سن اعضای لیست باشه.
با چه متدی من میتونم مقدار Age داخل همه آیتم های لیست رو باهم جمع کنم !؟ (چون لیست داینامیک هست و بعدا کم و زیاد میشه، یک روش میخوام که خودش همه آیتم های لیست رو بتونه جمع کنه و نیاز به معرفی پوزیشن مشخص نباشه)
// با تشکر !
خوب مشکل اینجاست که ما توی یک اکتیویتی دیگه هستیم و نمیشناسه Age رو
حالا من به این حالت درش آوردم
double sum = 0;
for (int i = 0; i < G.Ages.size(); i++) {
sum += G.Ages.get(StructAge.Age)[i];
}
الآن به StructAge.Age گیر میده میگه باید استاتیک باشه، اگه استاتیکش کنم، لیستم بهم میریزه و مقدار همه آیتم های لیست باهم یکی میشه.
خیلی تو در تو شده، من نمیدونم چجوری بهش حالی کنم که ما یک استراکت ایج داریم از جنس اری لیست که داخل اون استراکت ایج، چندتا نوشته داریم که ما فقط با ایج کار داریم، بیا حالا مقادیر ایج های همه رو باهم جمع کن !
وقتی بهش فکر میکنم سردرد میگیرم :)
آقا بعد از ساعت ها کلنجار به نتایج خیلی جالبی رسیدم :)
کد رو ارتقاع دادم و Age رو که عدد سن بود داخل StructAge تغییر دادم به counts
StructAge Age = G.Ages.get(count);
Ages = Age.counts;
double sum = 0;
for (int i = 0; i < G.Ages.size(); i++) {
sum += counts;
Log.i("Log", sum + " is sum");
الآن برام آیدی آیتم های لیست رو لوگ میکنه !
مثلا اگه سه تا نفر در لیست داشته باشم لوگش میشه 1 و 2 و 3 ، یا بعضی وقتها هم میشه 2 و 4 و 6 !
اگه یک نفر در لیست باشه، لوگ میکنه 1
اگر هم لیست خالی باشه از نفرات، با رفتن به اکتیویتی آمار، کرش میکنه. (که این مورد مهم نیست برام)
الآن چیکار کنم که بجای آیدی آیتم های لیست، برایم مقدار counts رو جمع کنه باهم !؟
سلام داخل کلاست تابع زیرو بنویس
public int getAge(){
return this.age
}
بعد داخل اکتیویتی اینجوری تعریف کن
ArrayList<StructAge> ages = new ArrayList<StructAge>
int sum = 0;
for(StructAge age:ages){
sum=age.getAge+sum;
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .