تمرین‌های آموزشیمسابقات

گزارش هواشناسی

نام و تاریخ مسابقه: جی‌کل 8 – 21 اردیبهشت 1397

مباحث: Collections و Generics

در یک ایستگاه هواشناسی، اطلاعات مربوط به میزان بارش باران روزانه‌ی شهرهای مختلف نگهداری می‌شود. این اطلاعات توسط کلاسی که واسط InformationRepository را پیاده‌سازی می‌کند در اختیار شما قرار خواهد گرفت. در این واسط متد fetchAll، تمامی اطلاعات موجود را در قالب لیستی از Information برمی‌گرداند. هر شی Information، میزان بارندگی را در یک شهر و تاریخ مشخص نشان می‌دهد.

این کلاس شامل فیلدهای زیر است:

  • فیلد city: نام شهر
  • فیلد date: تاریخ در قالب yyyy/MM/dd (مثال: 1395/01/12 و 1396/12/05)
  • فیلد amount: میزان بارندگی

در کلاس ReportService قرار است به کمک اطلاعاتی که از InformationRepository به دست می‌آید، دو گزارش زیر گرفته شود (ابتدا بسته‌ی ir.javacup.report را دانلود کرده و محتوای آن را ببینید):

  1. جمع میزان بارندگی هر شهر در یک سال مشخص (متد sumByCity): نتایج باید براساس نام شهر مرتب شده باشند.
  2. میانگین میزان بارندگی ماهانه در هر شهر در یک سال مشخص (متد averageByCityAndMonth): نتایج باید براساس نام شهر و سپس بر اساس ماه مرتب شده باشند. تعداد روزهای ماه را برای شش ماه اول سال 31 روز و برای شش ماه دوم 30 روز در نظر بگیرید.

با اجرای متد main در کلاس ReportService: خروجی زیر مورد انتظار است:

sum total: 2
1: Semnan 93
2: Tehran 31

avg total: 2
1: Kerman 3 2.000  //میانگین بارش در ماه خرداد در شهر کرمان
2: Tehran 9 3.000 //میانگین بارش در ماه آذر در شهر تهران

آنچه باید آپلود کنید:

یک فایل زیپ شامل بسته‌ی ir.javacup.report است. به صورتی که وقتی فایل زیپ را باز می‌کنیم، دقیقا شاخه‌ی ir را ببینیم که درون آن شاخه‌ی javacup و درون آن نیز شاخه‌ی report قرار دارد. در داخل شاخه‌ی report تنها یک فایل ReportService.java وجود داشته باشد.

برای داوری تمرین، می‌توانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.

برای آشنایی با نحوه‌ی ارسال پاسخ در Quera، این مطلب را مطالعه کنید.


با ما همراه باشید:

آدرس کانال تلگرام: IranianJavaDevelopers@

آدرس اکانت توییتر: JavaCupIR@

آدرس صفحه اینستاگرام: javacup.ir

آدرس گروه لینکدین: Iranian Java Developers

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا