پیش نیاز
دستورات شرطی (selector ها) در جاوا برای بررسی true یا false بودن یک عبارت مورد استفاده قرار میگیرند شرط یکی از مفاهیم مهم و ضروری در برنامه نویسی است.
متغیر boolean در جاوا دارای دو مقدار true یا false است و به صورت زیر تعریف میشه:
boolean v0 = true;
boolean v1 = false;
دستور شرطی if–else در جاوا
با دستور شرطی if-else در جاوا به بررسی true یا false بودن یک عبارت می پردازیم if به زبان فارسی یعنی اگر.
فرم کلی:
if(condition == true){
...
}else {
...
}
در عبارت بالا اگر شرط داخل پرانتز برابر با true بود کد های داخل بدنه ی if رو اجرا میکنه
کلید واژه ی else به معنی در غیر این صورت، یعنی در غیر اینصورت کد های داخل بدنه ی else رو اجرا کن
برای کوتاهی میتونیم شرط داخل پرانتز رو به صورت زیر بنویسیم
if(condition){
...
}else{
...
}
if های زنجیره ای
میتونیم به طور زنجیره ای چند if رو به هم وصل کنیم.
در این حالت برنامه به ترتیب از اولین if شروع میکنه به بررسی شرط و با درست بودن یکی از if ها کد های داخل بدنه ی if مورد نظر رو اجرا و از بررسی if های باقی مونده صرف نظر میکنه. اصطلاحا میشه گفت از زنجیره خارج میشه.
if(condition0){
...
}else if(condition1){
...
}else if(condition2){
...
}else if(condition3){
...
}else{
...
}
مثال
در این مثال میخوایم نسبت قد به وزن رو حساب کنیم و بررسی کنیم که کاربر اضافه وزن داره یا کاهش وزن یا وزنش متعادله
Scanner input = new Scanner(System.in);
System.out.println("Enter a weight: ");
double weight = input.nextDouble();
System.out.println("Enter height: ");
double height = input.nextDouble();
double bmi = weight / (height * height);
System.out.println("BMI is " + bmi);
if (bmi < 18.5){
System.out.println("Underweight");
}else if (bmi < 25){
System.out.println("Normal");
}else if (bmi < 30){
System.out.println("Overweight");
}else {
System.out.println("Obese");
}
if های تو در تو
میتونیم داخل هر if یک if دیگه بیان کنیم
if(condition0){
...
if(condition1){
...
if(condition2){
...
}
}
}else {
...
}
عملگر های منطقی در جاوا
از عملگر های منطقی برای تغییر مقدار boolean استفاده میشه؛ این عملگر ها در جاوا از قوانین جبر بول پیروی میکنن.
عملگر !
مقدار عبارت boolean رو معکوس میکنه مثلا اگ مقدار یک عبارت true باشه با این عملگر false میشه
boolean condition0 = true;
if(!condition0){
...
}
عملگر &&
معنی and (و) میده، فرض کنید چندتا شرط داریم میخوایم بررسی کنیم اگه همه true بودن عبارت داخل بدنه ی if اجرا بشه به صورت زیر عمل میکنیم:
if(condition0 && condition1 && ... && conditionN) {
...
}
عملگر ||
معنی or (یا) میده، فرض کنید چندتا شرط داریم میخوایم بررسی کنیم اگه یکیشون true بود کد های داخل {} مربوط به if اجرا بشه به صورت زیر عمل میکنیم
if(condition0 || condition1 || ... || conditionN){
...
}
عملگر ^
معنی or اختصاصی (exclusive or) میده هنگام بررسی دو عبارت شرطی فقط باید یکیشون true باشه.
if(condition0 ^ condition1){
...
}
مثال:
Scanner input = new Scanner(System.in);
System.out.println("Enter a number: ");
int num = input.nextInt();
if (num % 2 == 0 && num % 3 == 0)
System.out.println("Number is divisible by 2 and 3");
if (num % 2 == 0 || num % 3 == 0)
System.out.println("Number is divisible by 2 or 3");
if (num % 2 == 0 ^ num % 3 == 0)
System.out.println("Number is divisible by 2 or 3 but not both");
دستور switch در جاوا
اگه چندین مورد برای بررسی داشته باشیم میتونیم به جای استفاده از if های زنجیره ای از دستور سوییچ (switch) در جاوا استفاده کنیم.
توجه
از جاوا ۸ به بعد ویژگی های جدیدی به سوییچ اضافه شده؛ در اینجا کاربرد پایه ای این دستور رو بررسی میکنیم؛ میتونید برای مطالعه ی بیشتر به تغییرات سوییچ تا jdk 17 مراجعه کنید.
مثال:
Scanner input = new Scanner(System.in);
System.out.println("Enter number of day week (between 1 - 7");
int dayNumber = input.nextInt();
switch (dayNumber){
case 1: System.out.println("Saturday");break;
case 2: System.out.println("Sunday"); break;
case 3: System.out.println("Monday"); break;
case 4: System.out.println("Tuesday"); break;
case 5: System.out.println("Wednesday"); break;
case 6: System.out.println("Thursday");break;
case 7: System.out.println("Friday"); break;
default:
System.out.println("Day is not in range");
}
در مثال بالا کاربر عدد یکی از روز های هفته رو وارد میکنه اگه مطابق با هرکدوم از case ها بود برنامه اسم اون روزو نمایش میده از کلید واژه ی break برای خارج شدن از switch در جاوا استفاده میشه، چون بعد از برابر بودن متغیر با یک case، علاوه بر کد های مربوط به case برابر با متغیر کد های مربوط به case های بعدی هم به صورت خودکار اجرا میشن در این مثال بعد از هر case عبارت ()System.out.println اجرا میشه، از default زمانی استفاده میکنیم که متغیر با هیچ کدوم از case ها برابر نباشه و برنامه کدهای مربوط به default رو اجرا میکنه.
عبارت شرطی
مثال
Scanner input = new Scanner(System.in);
System.out.println("Enter number1: ");
int num1 = input.nextInt();
System.out.println("Enter number2: ");
int num2 = input.nextInt();
int max = (num1 > num2) ? num1 : num2;
System.out.println("number 1 is " + num1 + " number 2 is " + num2 + " maximum is " + max);
مثال بالا یک برنامه ی ساده است که از کاربر دو عدد میگیره و عدد بزرگتر رو نمایش میده
خلاصه
- از دستورات شرطی برای بررسی true یا false بودن یک یا چند عبارت شرطی استفاده میکنیم.
- دستور شرطی if-else رو میتونیم به صورت تکی، زنجیره ای و یا تودرتو بنویسیم.
- از عملگر های منطقی برای تغییر مقدار boolean استفاده میکنیم.
- اگه چندین مورد برای بررسی داشتیم میتونیم بجای if های زنجیره ای از دستور switch در جاوا استفاده کنیم.