آموزش جاوا (فصل ۱۲)
مقدمهای بر ریاضیات در زبان برنامهنویسی جاوا
در این آموزش یکی از پرکاربردترین کلاسهای اصطلاحاً Built-in در زبان برنامهنویسی جاوا تحت عنوان Math
را مورد بررسی قرار داده و از برخی متدهای تعریفشده در این کلاس به منظور انجام برخی عملیات ریاضیاتی در طراحی برنامههای خود بهرهمند خواهیم شد (توجه داشته باشیم که نام این کلاس با حرف اول بزرگ نوشته میشود.) در همین راستا، ابتدا پروژهای تحت عنوان Math ایجاد کرده و کلاسی به نام MathClass
در آن ایجاد میکنیم و پیش از کلیک کردن بر روی دکمۀ Finish، تیک گزینۀ public static void main را میزنیم.
برای آنکه بتوانیم متدهای مختلف کلاس Math
را مورد بررسی قرار داده و خروجی این متدها را مشاهده کنیم، از متد()println
استفاده کرده و خروجی حاصل از فراخوانی متدهای کلاس Math
را با بهکارگیری آن در کنسول چاپ مینماییم به طوری که در ابتدا کد مربوط به کلاس MathClass
به صورت زیر خواهد بود:
public class MathClass {
public static void main(String[] args) {
System.out.println();
}
}
حال چنانچه آرگومانی را به عنوان ورودی به متد ()println
بدهیم، مقدار در نظر گرفته شده در پنجرۀ کنسول نمایش داده میشود اما پیش از ادامۀ آموزش، دو رویکرد متفاوت در به اصطلاح ایمپورت کردن کلاسهای مختلف در برنامه را معرفی کرده و در ادامه متدهایی مانند ()abs
و ()ceil
و همچنین متد ()floor
از کلاس Math
را معرفی میکنیم.
معرفی روشهای مختلف ایمپورت کردن کلاسها در برنامههای جاوا
به طور خلاصه، میتوان گفت که کلیۀ کلاسها در زبان برنامهنویسی جاوا به دو صورت اصطلاحاً Implicit و Explicit در برنامۀ مورد نظر ایمپورت میشوند. برای مثال، کلاسی همچون Scanner
به صورت Explicit یا «آشکارا» در برنامۀ مورد نظر ایمپورت میشود. به عبارت دیگر، جهت بهکارگیری این کلاس در برنامه میباید در سطر اول به صورت آشکارا آن را ایمپورت نماییم اما از سوی دیگر برخی از کلاسها مانند کلاس String
،Math
و بسیاری از کلاسهای دیگر در زبان جاوا هستند که به صورت Implicit یا «ناآشکار» در برنامۀ مورد نظر ایمپورت میشوند. برای مثال، زمانی که از کلاس String
استفاده میکنیم، میبینیم که هیچ دستوری جهت ایمپورت کردن کلاس مذکور در برنامه نمینویسیم بدین دلیل که کلاس String
به صورت ضمنی در پروژههای ساختهشده در اکلیپس ایمپورت میشود و کلاس Math
نیز به همین صورت است و برای استفاده از آن نیازی به ایمپورت کردن دستی کلاس مذکور نداریم.
حال با آگاهی از این نکته که کلاس Math
به صورت ضمنی در برنامۀ ما ایمپورت شده و نیازی به نوشتن دستور مرتبط با ایمپورت آن نداریم، در ادامه به معرفی برخی از متدهای کلاس Math
و نحوۀ عملکرد هر یک از آنها میپردازیم.
متد ()abs
از جمله متدهای پرکاربرد کلاس Math
میتوان به ()abs
اشاره کرد که نام آن از واژۀ Absolute به معنای «مطلق» گرفته شده و این وظیفه را دارا است تا در صورت فراخوانی، تمامی اعدادی که به عنوان آرگومان ورودی به آن پاس داده میشوند را به یک عدد مثبت تبدیل کرده و در خروجی ریترن نماید که برای روشن شدن نحوۀ عملکرد این متد، کد فوق را به شکل زیر تکمیل میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.abs(-100));
}
}
همانطور که مشاهده میکنیم، به منظور استفاده از کلاس Math
، نام این کلاس را نوشته سپس یک .
قرار داده و در ادامه نام متد مورد نظر از این کلاس را مینویسیم. در واقع، پس از نوشتن نام کلاس Math
و قرار دادن نقطه، اکلیپس به صورت خودکار کلیهٔ متدهای مرتبط با این کلاس را برایمان نمایش میدهد که از میان متدهای مذکور میتوانیم ()abs
را انتخاب کرده و عدد مربوط به آرگومان ورودی را به آن پاس دهیم. بنابراین در کد فوق عدد 100- به عدد مثبت 100 تبدیل شده و توسط متد ()println
در خروجی چاپ میگردد.
به علاوه، همانطور که در آموزشهای پیشین اشاره کردیم، جهت نمایش متدهای کلاس Math
میتوانیم پس از نوشتن نام کلاس و درج علامت .
کلیدهای Ctrl + Space را به صورت همزمان فشار داده و بدین ترتیب متدهای تعریفشده در این کلاس را مشاهده نماییم. همچنین از میان گزینههای مربوط به متد ()abs
میباید متدی را انتخاب کنیم که مرتبط با دیتا تایپ آرگومان ورودی مورد نظر میباشد. با در نظر گرفتن این توضیحات، با اجرای برنامۀ فوق در خروجی خواهیم داشت:
100
همانطور که ملاحظه میکنیم، با استفاده از متد ()abs
عدد 100- به عدد مثبت 100 تبدیل شده و در کنسول چاپ شده است.
متد ()ceil
یکی دیگر از متدهای کلاس Math
متدی تحت عنوان ()ceil
میباشد که نام آن از واژۀ Ceiling به معنای «سقف اتاق» گرفته شده است و وظیفۀ آن تبدیل عددی از نوع اعشاری به یک عدد صحیح میباشد به طوری که دادهای از جنس اعشاری را به عنوان آرگومان ورودی گرفته و آن را رو به بالا رُند کرده و عددی صحیح را در خروجی ریترن میکند. برای مثال، اگر عدد 12/3 را به این متد دهیم، خروجی حاصله عدد 13 خواهد بود که برای درک بهتر نحوۀ کارکرد متد ()ceil
و همچنین ارتباط آن با واژۀ Ceiling، تصویر زیر را مد نظر قرار میدهیم:

حال در ادامه متد ()ceil
را در مثال مربوط به کد فوق فراخوانی میکنیم به طوری که در کد زیر داریم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.ceil(12.3));
}
}
همانطور که در کد فوق ملاحظه میکنیم، متد ()ceil
از کلاس Math
را فراخوانی کرده و عدد اعشاری 12/3 را به عنوان آرگومان ورودی به آن دادهایم که عدد ریترنشده توسط متد ()println
در کنسول چاپ میشود به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:
13.0
همانطور که میبینیم، عدد 12/3 رو به بالا رُند شده و در نتیجۀ آن عدد 13 در کنسول چاپ میشود.
متد ()floor
نحوۀ عملکرد متد ()floor
دقیقاً برعکس متد ()ceil
میباشد که نام آن نیز از واژۀ Floor به معنای «کف اتاق» گرفته شده است و با توجه به تصویر زیر میتوانیم عملکرد این متد را حدس بزنیم:

در واقع، متد ()floor
یک عدد اعشاری را به عنوان آرگومان ورودی گرفته و آن را رو به پایین رُند میکند و در ادامه عدد رُندشده را در خروجی ریترن میکند که برای روشن شدن نحوۀ کار این متد، کد مربوط به مثال پیشین را به صورت زیر بازنویسی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.floor(12.3));
}
}
در کد فوق، متد ()floor
از کلاس Math
را فراخوانی کرده و عدد 12/3 را به عنوان ورودی به آن دادهایم که نتیجۀ ریترنشده در خروجی نیز توسط متد ()println
در کنسول چاپ میشود به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:
12.0
همانطور که مشاهده میکنیم، متد ()floor
عدد 12/3 را رو به پایین رُند کرده و آن را به عدد 12 کاهش داده است. دانلود فایلهای تمرین
آشنایی با برخی متدهای کاربردی کلاس Math در زبان برنامهنویسی جاوا
در ادامۀ آموزش پیشین، در این آموزش جهت معرفی برخی دیگر از متدهای کاربردی کلاس Math
از پروژۀ تعریفشده در آموزش قبل استفاده کرده و قصد داریم تا نحوۀ عملکرد متدهایی همچون ()max
و ()min
و همچنین متدهای()pow
و ()sqrt
به همراه متد ()round
را مورد بررسی قرار دهیم.
متد ()max
اولین متدی که در این آموزش از کلاس Math
مورد بررسی قرار میدهیم ()max
است که بر خلاف متدهای معرفیشده در آموزش پیش، دو آرگومان ورودی میگیرد که با یک ,
از یکدیگر جدا میشود. در واقع، وظیفۀ متد ()max
این است که از بین دو آرگومان ورودی عدد بزرگتر را در خروجی ریترن کند که برای درک بهتر نحوۀ کار این متد، کد مربوط به کلاسMathClass
از آموزش پیشین را مد نظر قرار داده و در آن متد ()max
را به صورت زیر فراخوانی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.max(12, 22));
}
}
همانطور که ملاحظه میکنیم، متد ()max
با دو آرگومان ورودی معادل اعداد 12 و 22 فراخوانی شده است که با اجرای برنامه انتظار داریم تا عدد 22 در خروجی ریترن شده و توسط متد ()println
در کنسول چاپ شود. بنابراین با اجرای کد فوق در خروجی خواهیم داشت:
22
حال ببینیم چنانچه اعداد مربوط به آرگومان ورودی را به صورت ترکیبی از یک عدد اعشاری و یک عدد صحیح تعریف کنیم چه اتفاقی میافتد که برای این منظور نیز کد فوق را به صورت زیر بازنویسی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.max(12.1, 22));
}
}
در کد فوق، متد ()max
از کلاس Math
با دو آرگومان ورودی معادل اعداد 12/1 و 22 فراخوانی شده است و انتظار داریم که خروجی حاصل از آن عدد 22 باشد که با اجرای برنامه در خروجی خواهیم داشت:
22.0
همانطور که مشاهده میکنیم، باز هم عدد بزرگتر معادل عدد 22 توسط متد ()println
در کنسول چاپ شده است با این تفاوت که عدد صحیح 22 به یک عدد اعشاری معادل 22/0 تبدیل شده است. در واقع، آرگومانهای ورودی متد()max
هم میتوانند دادهای از جنس int
و هم double
باشند اما در این مثال یکی از ورودیها از نوع عدد صحیح و دیگری اعشاری بود و از همین روی با فراخوانی متد ()max
ابتدا هر دو عدد به مقادیری از جنس double
تبدیل شده و در ادامه با یکدیگر مقایسه شدند تا بزرگترین مقدار (در این مثال عدد 22/0) در خروجی ریترن گردد.
متد ()min
متد ()min
نقطۀ مقابل ()max
است که وظیفۀ آن پیدا کردن کوچکترین مقدار از میان دو آرگومان ورودی و ریترن کردن مقدار کوچکتر در خروجی میباشد که برای درک بهتر نحوۀ عملکرد این متد کد، فوق را به صورت زیر بازنویسی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.min(12.1, 22));
}
}
پس از اجرای برنامۀ فوق، مشابه مثال پیشین ابتدا هر دو عدد به مقادیر اعشاری تبدیل شده سپس از میان آنها کوچکترین مقدار توسط متد ()println
در کنسول چاپ شده است به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:
12.1
همانطور که میبینیم، فراخوانی متد ()min
با دو آرگومان ورودی معادل اعداد 12/1 و 22 منجر به ریترن شده کوچکترین مقدار معادل عدد 12/1 در خروجی شده است.
متد ()pow
در این بخش از آموزش متد دیگری از کلاس Math
تحت عنوان ()pow
را معرفی مینماییم. در واقع، متد ()pow
جهت به توان رساندن مقادیر عددی مورد استفاده قرار میگیرد و نحوۀ کار آن بدین صورت است که دو آرگومان ورودی گرفته و عدد مربوط به آرگومان ورودی اول را به توان آرگومان ورودی دوم میرساند که با دانستن این نکته میتوانیم کد فوق را به صورت زیر بازنویسی نماییم تا خروجی متدی را مشاهده کنیم که مسئول به توان رساندن در زبان برنامهنویسی جاوا است:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.pow(2, 3));
}
}
در تفسیر کد فوق باید گفت که متد ()pow
از کلاس Math
را با دو آرگومان ورودی معادل اعداد 2 و 3 فراخوانی کردهایم که پس از اجرای برنامه نیز عدد 2 به توان 3 رسیده و نتیجۀ حاصل از آن توسط متد ()println
در خروجی ریترن میشود به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:
8.0
همانطور که میبینیم، حاصل عملیات ریاضیاتی 2 به توان 3 معادل عدد 8 در کنسول چاپ شده است. در ادامه، متد دیگری را معرفی میکنیم که نقطۀ مقابل متد ()pow
میباشد.
متد ()sqrt
از جمله دیگر متدهای کلاس Math
میتوان به ()sqrt
اشاره کرد که به منظور گرفتن جذرِ عدد مربوط به آرگومان ورودی مورد استفاده قرار میگیرد و نحوۀ عملکرد آن بدین صورت است که یک آرگومان ورودی گرفته و عدد معادل جذر آن را در خروجی ریترن میکند (توجه داشته باشیم که نام این متد از واژۀ Square Root به معنای «جذر» در ریاضیات گرفته شده است.) اکنون پس از آشنایی با این متد میتوانیم کد مربوط به مثال پیشین را به صورت زیر بازنویسی کنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.sqrt(9));
}
}
در کد فوق، عدد 9 را به عنوان آرگومان ورودی به متد ()sqrt
دادهایم. در حقیقت، علت انتخاب عدد 9 به عنوان آرگومان ورودی این است که عدد مذکور دارای یک مجذور رُند میباشد اما میتوانیم هر عدد مثبت دلخواهی را به عنوان ورودی به این متد بدهیم. اکنون پس از اجرای برنامه در خروجی خواهیم داشت:
3.0
همانطور که میبینیم، فراخوانی متد ()sqrt
با آرگومان ورودی معادل عدد 9 منجر به ریترن شدن عدد 3 در خروجی شده و این عدد نیز توسط متد ()println
در کنسول چاپ شده است.
متد ()round
در پایان، با متد ()round
و همچنین نحوۀ عملکرد آن آشنا میشویم که این وظیفه را دارا است تا تمامی اعدادی که به عنوان آرگومان ورودی دریافت میکند را به عددی رُند تبدیل کرده و در خروجی ریترن نماید و نکتۀ قابلتوجه در ارتباط با نحوۀ عملکرد متد ()round
این است که عددی همچون 21/3 را به عدد 21 و عددی مانند 21/6 را به عدد 22 رُند میکند بدین معنی که چنانچه مقدار اعشار عدد مورد نظر کوچکتر از 0/5 باشد، عدد مذکور را رو به پایین و در غیر این صورت آن را رو به بالا رُند نموده و در خروجی ریترن میکند که برای روشن شدن نحوۀ عملکرد این متد، کد فوق را به صورت زیر بازنویسی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.round(21.3));
}
}
در کد فوق، متد ()round
را با آرگومان ورودی معادل عدد 21/3 فراخوانی نمودهایم و میبینیم که بخش اعشار این عدد کمتر از 0/5 میباشد و از همین روی متد ()round
آن را رو به پایین معادل عدد 21 رُند میکند که برای حصول اطمینان از این موضوع، برنامۀ فوق را یک بار اجرا میکنیم و در خروجی خواهیم داشت:
21
همانطور که میبینیم، عدد اعشاری 21/3 رو به پایین رُند شده و نتیجۀ حاصل از آن توسط متد ()println
در کنسول نمایش داده میشود. حال اگر عدد مربوط به آرگومان ورودی را به 21/6 تغییر دهیم، در خروجی خواهیم داشت:
22
در واقع، بخش اعشاری عدد 21/6 بزرگتر از 0/5 بوده و از همین روی متد ()round
آن را رو به بالا معادل عدد 22 رُند کرده است.
معرفی کلیدواژۀ enum در زبان برنامهنویسی جاوا
همانطور که در آموزش آشنایی با روشهای نامگذاری متغیرها در زبان برنامهنویسی جاوا توضیح دادیم، دیتا تایپboolean
به منظور تعریف شرایطی مورد استفاده قرار میگیرد که در آن بیش از دو حالت نداشته باشیم و مسلماً اگر در شرایطی قرار بگیریم که بیش از دو حالت پیش روی ما باشد، به طور قطع از این دیتا تایپ نخواهیم توانست استفاده کنیم که طراحان زبان برنامهنویسی جاوا برای چنین شرایطی enum
را در این زبان شیئگرا گنجاندهاند.
در واقع، کیورد enum
از واژۀ Enumeration به معنای «شمارش» گرفته شده است که در زبان برنامهنویسی جاوا به منظور تعریف شرایطی با بیش از دو حالت مورد استفاده قرار میگیرد که به عنوان چند مثال از دنیای واقعی میتوان چراغهای راهنمایی را نام برد که دارای سه حالت سبز، قرمز و زرد هستند یا روزهای هفته که شنبه، یکشنبه، دوشنبه، سه شنبه، چهارشنبه، پنج شنبه و جمعه را شامل میشوند. به علاوه، یک کشور میتواند توسعه یافته، در حال توسعه و یا عقب افتاده باشد!
به طور کلی، میتوان گفت که ساختار enum
یک نوع کلاس در زبان جاوا میباشد که از چند مقدار کانستنت تشکیل شده است و مثالهای فوقالذکر مواردی از دنیای واقعی هستند که اگر بخواهیم برنامهای در رابطه با آنها بنویسیم، ناگزیر میباید از ساختار enum
استفاده کنیم.
در همین راستا، به منظور درک بهتر ساختار enum
ابتدا یک سناریو تعریف کرده و آن را پیادهسازی مینماییم. برای مثال، یک مسابقۀ فوتبال را مد نظر قرار میدهیم که سه نتیجۀ متفاوت میتواند داشته باشد که عبارتند از تیم «الف» برنده بوده و تیم «ب» بازنده است، در حالت دوم تیم «ب» برنده و تیم «الف» بازنده است و در حالت سوم نیز نتیجۀ مسابقه مساوی میباشد. بنابراین برای شروع کار پروژهای تحت عنوان Enum ایجاد کرده و کلاسی تحت عنوان FootballMatch
در آن میسازیم و در ابتدای کار کد مربوط به این کلاس به صورت زیر خواهد بود:
public class FootballMatch {
public static void main(String[] args) {
}
}
در این مرحله نیاز داریم تا امکانی را برای کاربر فراهم کنیم تا بتواند نتیجۀ بازی را وارد برنامه کند و برای این منظور نیز از کلاس Scanner
استفاده کرده و کد فوق را به صورت زیر تکمیل میکنیم:
import java.util.Scanner;
public class FootballMatch {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
}
}
همانطور که در کد فوق ملاحظه میکنیم، آبجکتی تحت عنوان keyboardInput
از روی کلاس Scanner
ایجاد کردهایم و با استفاده از دستور System.in
امکان دسترسی سیستم به ورودی آیدیای را فراهم نمودهایم سپس به صورت زیر اقدام به تعریف ساختار enum
در برنامه میکنیم:
import java.util.Scanner;
public class FootballMatch {
enum WhoWins {
Perspolis, Esteghlal, Equal
};
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
}
}
همانطور که در کد فوق مشاهده میکنیم، پیش از کد مربوط به متد ()main
اقدام به نوشتن کد مربوط به enum
میکنیم بدین صورت که کلیدواژۀ enum
را نوشته سپس نامی دلخواه همچون WhoWins
برای آن در نظر میگیریم. در ادامه، داخل بلوک مربوط به enum
یا به عبارتی داخل علائم { }
حالتهای مد نظر خود را نوشته و آنها را با علامت,
از هم جدا میکنیم (توجه داشته باشیم که با مد نظر قرار دادن نیاز مسئله میتوانیم به تعداد دلخواه حالات مختلف تعریف نماییم.)
در سناریوی مطرحشده در این آموزش، سه حالت تیم برندۀ پرسپولیس، تیم برندۀ استقلال و حالت مساوی را در نظر میگیریم. در همین راستا، در ادامه نیاز داریم تا از کاربر بخواهیم که امتیاز هر یک از تیمها را وارد برنامه کند تا بتوانیم با مقایسۀ امتیازهای آنها تیم برنده را مشخص نماییم که برای این منظور کد فوق را به شکل زیر تکمیل میکنیم:
import java.util.Scanner;
public class FootballMatch {
enum WhoWins {
Perspolis, Esteghlal, Equal
};
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print("Please enter the score of Perspolis: ");
int perspolisScore = keyboardInput.nextInt();
keyboardInput.close();
}
}
در کد فوق، ابتدا استرینگ «:Please enter the score of Perspolis» را در پنجرۀ کنسول نمایش میدهیم تا به کاربر اطلاع دهیم که امتیاز تیم پرسپولیس را وارد برنامه کند سپس با استفاده از دیتا تایپ int
متغیری تحت عنوانperspolisScore
ایجاد کرده و مقدار حاصل از فراخوانی متد ()nextInt
روی آبجکت ساختهشده از روی کلاسScanner
را بدان منتسب میکنیم. بنابراین دیتای مربوط به امتیاز تیم پرسپولیس توسط متد ()nextInt
خوانده شده و در متغیر perspolisScore
نگهداری میشود. حال به صورت زیر همین مراحل را برای دریافت امتیاز تیم استقلال تکرار میکنیم:
import java.util.Scanner;
public class FootballMatch {
enum WhoWins {
Perspolis, Esteghlal, Equal
};
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print("Please enter the score of Perspolis: ");
int perspolisScore = keyboardInput.nextInt();
System.out.print("Please enter the score of Estghlal: ");
int esteghlalScore = keyboardInput.nextInt();
keyboardInput.close();
}
}
در کد فوق، ابتدا استرینگی در کنسول نمایش میدهیم تا کاربر امتیاز تیم استقلال را وارد برنامه کند سپس مشابه آنچه که در بالا توضح دادیم، مقدار ورودی را خوانده و آن را به متغیر esteghlalScore
منتسب میکنیم. اکنون برنامه را اجرا میکنیم و در خروجی خواهیم داشت:
Please enter the score of Perspolis: 2
Please enter the score of Estghlal: 2
همانطور که ملاحظه میکنیم، استرینگ اول چاپ شده و در ادامه از طریق کیبورد میتوانیم عدد مربوط به امتیاز تیم پرسپولیس را وارد کنیم که به محض وارد کردن عدد اول و فشردن دکمۀ اینتر، استرینگ دوم به نمایش درآمده و میتوانیم عدد مربوط به امتیاز تیم استقلال را وارد کنیم. حال جهت مقایسۀ نتایج هر دو تیم، اقدام به استفاده از دستوراتی شرطی از جنس if
میکنیم (جهت کسب اطلاعات بیشتر در این مورد، به آموزش آشنایی با دستور شرطی if در زبان برنامهنویسی جاوا مراجعه نمایید.) حال برای تعریف دستورات شرطی مورد نظر، کد فوق را به صورت زیر تکمیل مینماییم:
import java.util.Scanner;
public class FootballMatch {
enum WhoWins {
Perspolis, Esteghlal, Equal
};
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print("Please enter the score of Perspolis: ");
int perspolisScore = keyboardInput.nextInt();
System.out.print("Please enter the score of Estghlal: ");
int esteghlalScore = keyboardInput.nextInt();
if (perspolisScore > esteghlalScore) {
System.out.print(WhoWins.Perspolis + " is the Winner.");
} else if (esteghlalScore > perspolisScore) {
System.out.print(WhoWins.Esteghlal + " is the Winner.");
} else {
System.out.print(WhoWins.Equal);
}
keyboardInput.close();
}
}
در کد فوق، از دستورات شرطی تودرتو استفاده کردهایم بدین صورت که چنانچه مقدار منتسب به متغیر perspolisScore
بزرگتر از esteghlalScore
باشد، دستور شرطی برقرار بوده و دستورات مرتبط با آن مبنی بر چاپ مقدار Perspolis
از ساختار enum
تحت عنوان WhoWins
به همراه استرینگ «.is the Winner» اجرا میشوند و در غیر این صورت مجدداً در دستور else if
بررسی میکنیم که چنانچه مقدار اختصاصیافته به متغیر esteghlalScore
بزرگتر از مقدار متغیر perspolisScore
باشد، مقدار Esteghlal
به همراه استرینگ مربوطه در کنسول چاپ گردد و در صورت برقرار نبودن هیچ یک از این شروط نیز دستورات مرتبط با else
اجرا شده و دیتای Equal
در کنسول چاپ میشود (توجه داشته باشیم که برای دسترسی به هر یک از مقادیر ساختار enum
ابتدا نام آن را نوشته سپس یک علامت .
قرار داده و در ادامه نام دیتای مورد نظر جهت دستیابی به آن را درج میکنیم.) اکنون برنامه را اجرا کرده به طوری که در خروجی خواهیم داشت:
Please enter the score of Perspolis: 4
Please enter the score of Estghlal: 2
Perspolis is the Winner.
در اجرای اول، امتیاز تیم پرسپولیس را 4 در نظر گرفته و امتیاز استقلال را 2 وارد کردهایم که پس از فشردن دکمۀ اینتر میبینیم که شرط اول برقرار بوده و مقدار Perspolis
در کنسول چاپ میشود. در ادامه مجدداً برنامه را اجرا کرده و این بار امتیاز تیم استقلال را عددی بالاتر وارد میکنیم به طوری که داریم:
Please enter the score of Perspolis: 2
Please enter the score of Estghlal: 4
Esteghlal is the Winner.
در اجرای دوم، امتیاز تیم پرسپولیس را 2 در نظر گرفته و امتیاز استقلال را 4 وارد کردهایم که در این صورت دستورelse if
برقرار بوده و از همین روی مقدار Esteghlal
در کنسول چاپ میگردد. در این مرحله، برنامه را یک بار دیگر اجرا کرده و امتیازی برابر برای هر دو تیم وارد میکنیم به طوری که در خروجی خواهیم داشت:
Please enter the score of Perspolis: 0
Please enter the score of Estghlal: 0
Equal
همانطور که میبینیم، در اجرای سوم امتیاز تیم پرسپولیس را 0 در نظر گرفته و امتیاز استقلال را هم معادل عدد 0 وارد کردهایم که هیچ یک از شرایط برنامه برقرار نبوده و دستورات مرتبط با else
اجرا میشوند و از همین روی دیتایEqual
از ساختار WhoWins
در کنسول نمایش داده شده است. دانلود فایلهای تمرین