دستگرمی

دستگرمی پنجم

دستگرمی این هفته:

برنامه‌ی زیر چند حالت خروجی متفاوت می‎تواند داشته باشد؟

برنامه فوق، چند خروجی متفاوت می‎تواند داشته باشد؟

  • 3 (43%, 3 رای)
  • 4 (43%, 3 رای)
  • 1 (14%, 1 رای)
  • 2 (0%, 0 رای)

مجموع رای ها: 7

Loading ... Loading ...

پاسخ:

پاسخ صحیح:  ۳

برای رسیدن به پاسخ، متد main را خط به خط بررسی می‎کنیم.

خط ۴: یک مقدار boolean به صورت تصادفی تولید می‎شود و اگر مقدار تصادفیِ تولیدشده، true باشد، بلاک if و اگر false باشد، بلاک else اجرا می‎شود.

فرض کنید، مقدار تصادفی، true باشد. پس اجرای برنامه به خط ۵ می‎رود.

خط ۵: متغیر r1 ایجاد شده و مقداردهی می‌شود. در مقداردهی r1 باید به این نکته توجه داشت که متد ()rand و ()nextDouble، یک عدد تصادفی اعشاری بین ۰ و ۱ تولید می‎کنند. 

خط ۶: با توجه به توضیح فوق، مقدار r1 همواره مثبت خواهد بود و خط ۷ اجرا خواهد شد.

خط ۷: در خروجی، مقدار ۱ نوشته می‎شود.

حال فرض کنید که مقدار تصادفیِ اولیه در خط ۴، برابر با false باشد. در این صورت اجرای برنامه به خط ۱۲ می‌رود.

خط ۱۲: از آن‌جا که متد ()rand عددی بین ۰ و ۱ تولید می‎کند، مقدار متغیر rand، عددی اعشاری بین ۱۰ تا ۲۰ خواهد بود. مثلا ۱۴٫۶ یا ۱۶٫۳ یا …

خط ۱۳: متغیر rand به int تبدیل می‌شود. در این فرآیند، عدد اعشار همواره به پایین گرد می‌شود. پس متغیر r1 برابر با ۱۴ یا ۱۶ یا … خواهد بود.

خط ۱۴: با متد Math.round، عدد اعشار به نزدیک‌ترین عدد صحیح گرد می‌شود. پس متغیر r2 برابر با ۱۵ یا ۱۶ یا … خواهد بود.

خط ۱۵: r2 همواره کوچکرمساوی ۲۰ است و همانطور که دیدیم، ممکن است گاهی r2 بزرگتر از r1 و گاهی هم برابر با r1 شود. بنابراین بسته به عدد تصادفیِ تولیدشده، هم بلاک if و هم بلاک else احتمال اجرا دارند. پس عدد ۳ یا ۴ هر دو ممکن است به عنوان خروجی در کنسول چاپ شوند.

پس سه مقدار ۱، ۲ و ۳ ممکن است در خروجی چاپ شوند.

.

.

.

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

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

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

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

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

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

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

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

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