دستور if

می‌توان با استفاده از دستور if و یک شرط خاص که باعث ایجاد یک کد می‌شود یک منطق به برنامه خود اضافه کنید. دستور if ساده‌ترین دستور شرطی است که برنامه می‌گوید اگر شرطی برقرار است، کد معینی را انجام بده. ساختار دستور if به صورت زیر است :

if (condition)
   code to execute;

قبل از اجرای دستور if ابتدا شرط بررسی می‌شود. اگر شرط برقرار باشد یعنی درست باشد سپس کد اجرا می‌شود. شرط یک عبارت مقایسه‌ای است. می‌توان از عملگرهای مقایسه‌ای برای تست درست یا اشتباه بودن شرط استفاده کرد. اجازه بدهید که نگاهی به نحوه استفاده از دستور if در داخل برنامه بیندازیم. برنامه زیر پیغام Hello World را اگر مقدار number کمتر از 10 و Goodbye World را اگر مقدار number از 10 بزرگ‌تر باشد در صفحه نمایش می‌دهد.

   1: package myfirstprogram;
   2: 
   3: public class MyFirstProgram 
   4: {
   5:     public static void main(String[] args) 
   6:     {                                                              
   7:         //Declare a variable and set it a value less than 10
   8:         int number = 5;                                     
   9: 
  10:         //If the value of number is less than 10            
  11:         if (number < 10)                                    
  12:                 System.out.println("Hello World.");              
  13: 
  14:         //Change the value of a number to a value which     
  15:         // is greater than 10                               
  16:         number = 15;                                        
  17: 
  18:         //If the value of number is greater than 10         
  19:         if (number > 10)                                    
  20:                 System.out.println("Goodbye World.");            
  21:     }   
  22: }
Hello World.
Goodbye World.

در خط 8 یک متغیر با نام number تعریف و مقدار 5 به آن اختصاص داده شده است. وقتی به اولین دستور if در خط 11 می‌رسیم برنامه تشخیص می‌دهد که مقدار number از 10 کمتر است یعنی 5 کوچک‌تر از 10 است.

منطقی است که نتیجه مقایسه درست می‌باشد بنابراین دستور if دستور را اجرا می‌کند (خط 12) و پیغام Hello World چاپ می‌شود. حال مقدار number را به 15 تغییر می‌دهیم (خط 16). وقتی به دومین دستور if در خط 19 می‌رسیم برنامه مقدار number را با 10 مقایسه می‌کند و چون مقدار number یعنی 15 از 10 بزرگ‌تر است برنامه پیغام Goodbye World را چاپ می‌کند (خط 20). به این نکته توجه کنید که دستور if را می‌توان در یک خط نوشت :

if ( number > 10 ) System.out.println("Goodbye World.");

شما می‌توانید چندیندستور را در داخل دستور if بنویسید. کافیست که از یک آکولاد برای نشان دادن ابتدا و انتهای دستورات استفاده کنید. همه دستورات داخل بین آکولاد جز بدنه دستور if هستند. نحوه تعریف چند دستور در داخل بدنه if به صورت زیر است :

if (condition)
{
    statement1;
    statement2;
    .
    .
    .
    statementN;
}

این هم یک مثال ساده :

if (x > 10)
{
   System.out.println("x is greater than 10.");
   System.out.println("This is still part of the if statement.");
}

در مثال بالا اگر مقدار x از 10 بزرگ‌تر باشد دو پیغام چاپ می‌شود. حال اگر به عنوان مثال آکولاد را حذف کنیم و مقدار x از 10 بزرگ‌تر نباشد مانند کد زیر :

if (x > 10)
   System.out.println("x is greater than 10.");
   System.out.println("This is still part of the if statement. (Really?)");

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

if (x > 10)
   System.out.println("x is greater than 10.");

   System.out.println("This is still part of the if statement. (Really?)");

می‌بیند که دستور دوم (خط 3) در مثال بالا جز دستور if نیست. اینجاست که چون ما فرض را بر این گذاشته‌ایم که مقدار x از 10 کوچک‌تر است پس خطThis is still part of the if statement. (Really?) چاپ می‌شود. در نتیجه اهمیت وجود آکولاد مشخص می‌شود. به عنوان تمرین همیشه حتی اگر فقط یک دستور در بدنه if داشتید برای آن یک آکولاد بگذارید. فراموش نکنید که از قلم انداختن یک آکولاد باعث به وجود آمدن خطا شده و یافتن آن را سخت می‌کند. یکی از خطاهای معمول کسانی که برنامه نویسی را تازه شروع کرده‌اند قرار دادن سیمیکولن در سمت راست پرانتز if است. به عنوان مثال :

if (x > 10); 
   System.out.println("x is greater than 10");

به یاد داشته باشید که if یک مقایسه را انجام می‌دهد و دستور اجرایی نیست. بنابراین برنامه شما با یک خطای منطقی مواجه می‌شود. همیشه به یاد داشته باشید که قرار گرفتن سیمیکولن در سمت راست پرانتز if به منزله این است که بلوک کد در اینجا به پایان رسیده است. به این نکته توجه داشته باشید که شرطها مقادیر بولی هستند، بنابراین شما می‌توانید نتیجه یک عبارت را در داخل یک متغیر بولی ذخیره کنید و سپس از متغیر به عنوان شرط در دستور if استفاده کنید. اگر مقدار year برابر 2000 باشد سپس حاصل عبارت در متغیر isNewMillenium ذخیره می‌شود. می‌توان از متغیر برای تشخیص کد اجرایی بدنه دستور if استفاده کرد خواه مقدار متغیر درست باشد یا نادرست.

bool isNewMillenium = year == 2000;

if (isNewMillenium)
{
    System.out.println("Happy New Millenium!");
}