آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

چطور میشه سن تمام کاربران رو در یک Array list باهم جمع کرد ؟ (حل شد)

alfredo  10 سال پیش  10 سال پیش
0 0

سلام دوستان

فرض کنید یک Arraylist داریم که در کلاس G به این صورت معرفی شده

     public static ArrayList<StructAge> Ages = new ArrayList<StructAge>();

حالا داخل StructAge یک تکست ویو داریم به اسم public int    Age

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

با چه متدی من میتونم مقدار Age داخل همه آیتم های لیست رو باهم جمع کنم !؟ (چون لیست داینامیک هست و بعدا کم و زیاد میشه، یک روش میخوام که خودش همه آیتم های لیست رو بتونه جمع کنه و نیاز به معرفی پوزیشن مشخص نباشه)

// با تشکر ! 

+1 0
با یه for مشکل حل میشه ! مشکل اصلی کجاست؟ (10 سال پیش)
0 0
خوب دستورش چیه ؟! من بلد نیستم ! (10 سال پیش)
0 0
یک حسی بهم میگه جوابم توی این لینک هست، ولی مطمئن نیستم، کسی میتونه بررسی کنه ؟ لینک (10 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
FSR  10 سال پیش
+1 0

dounle sum=0; 
for(int i=0;i<Ages.size();i++){
sum+=Ages[i];
}
+1 0
تقریبا یه اینجور چیزی (10 سال پیش)
0 0
میگه Ages cannot be resolved T ظاهرا Ages رو نمیشناسه از توی این اکتیویتی :( (10 سال پیش)
0 0
البته خط اول G.Ages نوشتم و شناخت ولی خط دوم رو قبول نمیکنه (10 سال پیش)
0 0
چرا قبول نمیکنه چه error میده؟ (10 سال پیش)
پاسخ به سوال 
alfredo  10 سال پیش
0 0

خوب مشکل اینجاست که ما توی یک اکتیویتی دیگه هستیم و نمیشناسه Age رو

حالا من به این حالت درش آوردم

   double sum = 0;
        for (int i = 0; i < G.Ages.size(); i++) {
            sum += G.Ages.get(StructAge.Age)[i];
        }

الآن به StructAge.Age گیر میده میگه باید استاتیک باشه، اگه استاتیکش کنم، لیستم بهم میریزه و مقدار همه آیتم های لیست باهم یکی میشه.

خیلی تو در تو شده، من نمیدونم چجوری بهش حالی کنم که ما یک استراکت ایج داریم از جنس اری لیست که داخل اون استراکت ایج، چندتا نوشته داریم که ما فقط با ایج کار داریم، بیا حالا مقادیر ایج های همه رو باهم جمع کن ! 

وقتی بهش فکر میکنم سردرد میگیرم :)

 

 

پاسخ به سوال 
alfredo  10 سال پیش
0 0

آقا بعد از ساعت ها کلنجار به نتایج خیلی جالبی رسیدم :)

کد رو ارتقاع دادم  و 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 رو جمع کنه باهم !؟

+1 0
داخل ساختارت تعداد عناصر را که داری یه تابع بنویس در کلاست که یه حلقه توشه از 0 تا تعداد age ها را با هم جمه کنه و برگردونه بعد هر جا می خوای صداش کن (10 سال پیش)
+1 0
ببخشید تعداد را اشتباه نوشتم جاشو داخل ادابتور مربوط به لیست (10 سال پیش)
0 0
ساختار تعداد عناصر یعنی StructAge ؟ تابع چی هست ؟ متوجه منظورتون نشدم :( پیشنهاد میکنید کدوم ویدئوی استاد رو ببینم تا این مبحث برام جا بی افته ؟ (10 سال پیش)
0 0
یک روش دیگه به فکرم رسید که یک استاتیک تکست ویو تعریف کنم در اکتیویتی آمار. بعد هموقع که کاربر داخل هر اکتیویتی سنش رو وارد کرد، عددش با عدد داخل تسکت ویو آمار جمع بشه ! این چطوره ؟ (10 سال پیش)
0 0
این روش هم جواب نداد :( (10 سال پیش)
پاسخ به سوال 
nero 360  10 سال پیش
+2 0

سلام داخل کلاست تابع زیرو بنویس 

 public int getAge(){
return this.age
}

 بعد داخل اکتیویتی اینجوری تعریف کن

 ArrayList<StructAge> ages = new ArrayList<StructAge> 

int sum = 0;

for(StructAge age:ages){

sum=age.getAge+sum;

}

 

0 0
"سلام داخل کلاست تابع زیرو بنویس" === > داخل کدوم کلاس ؟ (10 سال پیش)
0 0
آقا با همین متدی که شما فرمودید درست شد ! البته یکم تغییرش دادم، و اون قسمت اولش هم که نمیدونستم کجا بذارم استفاده نکردم. دم همتون گرررررررررررررررررررررمممممممممممممم !!!!!!!!!!!!!!!!!! (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .