Tek bir if deyimi, programınızın iki seçenekten birini seçmesine olanak sağlar ve tüm dallanma bu kadardır. Öte yandan pratikte daha fazla dallanmaya ihtiyaç duyan uygulamalar yapmanız gerekir. Birinci karardan sonra ikinci, ikinciden sonra üçüncü kararın (dallanmanın) alınması gerekebilir. Bu şekilde giden bir program akışı için iç içe if deyimleri (nested if statements) kullanmalısınız.
Örneğin şöyle kullanabilirsiniz:
if (koşul) {
//koşul 1'in komutları
//if (koşul1a) {
//koşul 1a'nın komutları
//...
}
}
İlk şartlı dallanmanın içinde tekrar bir şartlı dallanma yapmak gerektiğinde, iç içe if kullanabilirsiniz. Bunun kullanımına ilişkin şu örneğe göz atınız:
public class IcIceIfDeyimi1 {
public static void main(String[] args) {
int sinav1=45;
int sinav2=50;
int sinav3=66;
//ortalama'yı float olarak alıyoruz.
float ortalama= (float) (sinav1+sinav2+sinav3)/3;
String sonuc;
if (ortalama<45) {
//0-44 arası ortalama zayıf
sonuc="Zayif";
} else if (ortalama<55){
//45-54 arası ortalama geçer
sonuc="Gecer";
} else if (ortalama<70) {
//55-69 arası ortalamaya orta
sonuc="Orta";
} else if (ortalama<85) {
//70-84 arası ortalamaya iyi
sonuc="Iyi";
} else {
//başka bir sonuç kalmadığı için tekrar
//if ile şart aramıyoruz
sonuc="Pekiyi";
}
System.out.println("Ortalama: "+ortalama);
System.out.println("Buna gore sonuc: "+sonuc);
}
}
Programın sonucu şöyle olacaktır:
NOT: İç içe if kullanırken dikkat etmemiz gereken şey, koşulları yazarken programın adım adım bunları denetleyeceğini dikkate almamız gerektiğidir. En dıştaki veya en üstteki şart, ondan sonra gelenlerle çelişmemelidir.
Yukarıdaki if deyimlerini daha kısa olacak şekilde şöyle de yazabiliriz:
if (ortalama<45)
sonuc="Zayif";
else if (ortalama<55)
sonuc="Gecer";
else if (ortalama<70)
sonuc="Orta";
else if (ortalama<85)
sonuc="Iyi";
else
sonuc="Pekiyi";
Bu şekilde bir yazım genelde if'ten sonraki komut/deyim tek satırlık olacaksa kullanışlıır.
Şimdi biraz daha gerçek bir iç içe if deyimi örneği üzerinde duralım. Bu örnekte kullanıcıdan 3 tane sayı girmesini istiyoruz ve bu 3 sayıdan en küçüğünü bulup ekrana basıyoruz.
import java.io.IOException;
import java.util.Scanner;
public class IcIceIfDeyimi2 {
public static void main(String[] args) throws IOException {
Scanner giris = new Scanner(System.in);
int a,b,c; //sayılar, bu değişkenlere
int enKucukSayi; //en küçüğü bir yerde tutalım
System.out.println("Birinci sayiyi giriniz: ");
a = giris.nextInt();
System.out.println("Ikinci sayiyi giriniz: ");
b=giris.nextInt();
System.out.println("Ucuncu sayiyi giriniz: ");
c=giris.nextInt();
if (a < b) {
if (a < c) {
enKucukSayi=a;
} else {
enKucukSayi=c;
}
} else if (b < c) {
enKucukSayi=b;
} else {
enKucukSayi=c;
}
System.out.println("En kucuk sayi: "+enKucukSayi);
}
}
Bu kodu çalıştırdığınızda ve sayıları girdiğinizde şöyle bir çıktı oluşacaktır:
Bu örnekte üç sayıdan en küçüğünü bulabilmek için önce ilk iki sayıyı ele alıyoruz.
- Önce ilk sayı ikinci sayıdan küçük mü diye (a < b) bakıyoruz.
- Bu şart sağlanıyorsa bu sefer ilk sayıyla üçüncü sayıyı ele alıyoruz (a < c).
- İlk sayı üçüncü sayıdan küçükse en küçük sayı ilk sayıdır.
- İlk sayı üçüncü sayıdan küçük değilse en küçük sayı üçüncü sayıdır.
- İlk sayının ikinci sayıdan küçük olma şartı sağlanmıyorsa ikinci ile üçüncü sayıyı ele alıyoruz (b < c).
- İkinci sayı üçüncü sayıdan küçükse en küçük sayı ikinci sayıdır.
- İkinci sayı üçüncü sayıdan küçük değilse en küçük sayı üçüncü sayıdır.
- Bu şart sağlanıyorsa bu sefer ilk sayıyla üçüncü sayıyı ele alıyoruz (a < c).
Bir sonraki derste if-else-if kullanımına dair örnekleri bulabilirsiniz.