1. Daxili if-in əsas sintaksisi
Real həyatda qərarın yalnız bir meyara görə verildiyi vəziyyət az rast gəlinir. Adətən bir neçə şərti eyni zamanda yoxlamaq lazım olur və onlar tez-tez bir-birindən asılı olur. Məsələn, konsertə düşmək üçün təkcə yetkin olmaq kifayət deyil — bəzən dəvətlilər siyahısında da olmalısınız. Məhz burada çoxsəviyyəli məntiq işə düşür və bunu qurmaqda bizə daxili if operatorları kömək edir.
Daxili şərtlər — bir if-in digərinin içində olmasıdır. Qutu içində qutu kimi təsəvvür edin: əgər xarici şərt ödənilərsə, yalnız onda daxili şərt yoxlanılır. Bu, axının idarə olunması üçün güclü bir alətdir.
Sadədən başlayaq:
if (uslovieA)
{
// uslovieA true olduqda icra edilən əməliyyatlar
if (uslovieB)
{
// hər iki şərt doğru olduqda icra edilən əməliyyatlar
}
}
if başqa bir
if-in daxilində
Əgər bu sizə matryoşkanı xatırladırsa — hər şeyi düzgün anlayırsınız! Daxili if yalnız xarici şərt işlədikdə icra olunacaq.
Nümunə: kluba giriş
Gəlin əvvəl istifadəçi ad və yaşı daxil etdiyi tətbiqi genişləndirək. İndi ikinci yoxlama səviyyəsini əlavə edək: deyək ki, qapalı kluba düşmək üçün 21 yaşdan böyük olmaq və dəvət koduna sahib olmaq lazımdır.
System.out.print("Adınızı daxil edin: ");
String name = console.nextLine();
System.out.print("Yaşınızı daxil edin: ");
int age = console.nextInt();
if (age >= 21)
{
System.out.print("Dəvət kodunu daxil edin: ");
String code = console.nextLine();
if (code.equals("VIP2024"))
{
System.out.println("Xoş gəlmisiniz, " + name + ", VIP-kluba!");
}
else
{
System.out.println("Üzr istəyirik, kod səhvdir. Giriş qadağandır.");
}
}
else
{
System.out.println("Üzr istəyirik, giriş yalnız 21 yaşdan etibarən mümkündür!");
}
Diqqət yetirin: daxili if kodu yalnız yaş artıq yoxlamadan keçibsə yoxlayır. Bu, resurslara (və mühafizəçinin əsəblərinə) qənaət edir.
2. Neçə səviyyə dərinliyinə icazə verilir?
Texniki cəhətdən — istədiyiniz qədər. Amma praktikada: iç-içə səviyyələr nə qədər çox olarsa, kodu oxumaq və dəstəkləmək bir o qədər çətinləşir. Adətən 2–3 səviyyə ilə məhdudlaşmağa çalışırlar. Əgər 4+ daxili if-dən “pilləkən” alınırsa, məntiqi sadələşdirmək və ya yoxlamaları metodlara çıxarmaq barədə düşünün.
3. Daxili if və else: tələlər və incəliklər
Yeni başlayanların səhvi: fiqurlu mötərizələrdən səliqəsiz istifadə.
Java-da else istifadə edilərkən sərt bir qayda var: fiqurlu mötərizələr {} olmadan if və ya else-dən sonra yalnız ilk operator onlara aid olur. Bu, xoşagəlməz səhvlərin tez-tez rastlanan mənbəyidir.
Potensial səhv ilə nümunə:
if (age >= 21)
if (code.equals("VIP2024"))
System.out.println("Xoş gəlmisiniz!");
else
System.out.println("Səhv kod.");
Bir çoxları else-in yaşın yoxlanmasına aid olduğunu gözləyir, amma əslində o, özündən əvvəlki ən yaxın if-ə (dəvət kodunun yoxlanmasına) aiddir. Buna görə də mesajlar gözlənildiyi kimi göstərilməyə bilər. Ən yaxşısı həmişə mötərizələrdən istifadə edin — içəridə cəmi bir sətir olsa belə!
Anlaşılmazlıq olmasın deyə, kompilyator bu kodu belə görür:
if (age >= 21)
{
if (code.equals("VIP2024"))
System.out.println("Xoş gəlmisiniz!");
else
System.out.println("Səhv kod.");
}
Vacibdir! Bir daha: əgər if-else konstruksiyasında fiqurlu mötərizələr qoyulmayıbsa, else özündən əvvəlki (ona ən yaxın) if-ə aiddir.
4. Alternativlər: else if daxili şərtlərdə
Bəzən xarici if daxilində yalnız əlavə bir şərt yox, həm də alternativ nəzərdə tutmaq istəyirik. Məsələn, dəvət kodu uyğun gəlmirsə, qonaq rejimini təklif etmək və ya imtina etmək olar.
if (age >= 21)
{
System.out.print("Dəvət kodunu daxil edin: ");
String code = console.nextLine();
if (code.equals("VIP2024"))
{
System.out.println("Kluba xoş gəlmisiniz!");
}
else if (code.equals("GUEST"))
{
System.out.println("Qonaq rejimi: giriş yalnız 23:00-a qədərdir.");
}
else
{
System.out.println("Təəssüf ki, giriş mümkün deyil.");
}
}
else
{
System.out.println("Giriş yalnız 21 yaşdan.");
}
Burada xarici seçim daxilində üç ssenari arasında daxili seçim edirik: VIP-kod, qonaq kodu və imtina.
5. Təcrübə: çoxsəviyyəli məntiq ilə endirim kalkulyatoru
Tutaq ki, istifadəçiyə yaşına və klub kartının olmasına əsasən endirim verilir.
- İstifadəçinin yaşı 60 və daha çoxdursa — endirim 15%.
- Yaş daha azdırsa, amma istifadəçinin klub kartı varsa — endirim 7%.
- Digər hallarda endirim yoxdur.
Bunu necə həyata keçirmək olar?
System.out.print("Yaşınızı daxil edin: ");
int age = console.nextInt();
double discount = 0.0;
if (age >= 60)
{
discount = 0.15;
}
else
{
System.out.print("Sizde klub kartı var (bəli/xeyr)? ");
String hasCard = console.nextLine();
if (hasCard.equals("bəli"))
{
discount = 0.07;
}
}
System.out.println("Endiriminiz: " + (discount * 100) + "%");
Burada biz else qolunun içində daxili if istifadə etdik: yaş uyğun gəlmədikdə, yalnız bundan sonra kart barədə soruşuruq.
GO TO FULL VERSION