🚦
Basics

if-else (Decision Making)

Control Flow
💡 if-else is like a railway junction — the track switches left or right depending on the condition.

The if block runs only when the condition is true. If it's false, the else block runs instead.

You can chain multiple conditions with else if — like checking one gate after another.

int marks = 85;
if (marks >= 90) {
  System.out.println("A grade");
} else if (marks >= 60) {
  System.out.println("B grade");
} else {
  System.out.println("Keep trying!");
}
🚦
if-else is like a railway junction — the track switches left or right depending on the condition.
1 / 5
On this page (3 subtopics)

if-else ke andar aur if-else likhna "nesting" kehlata hai — jab do ya zyada independent conditions check karni ho, ek doosre ke andar. Har nested level apni khud ki true/false decision leta hai, jo outer condition par depend kar sakti hai.

Bahut zyada nesting (3-4 level se zyada) code ko padhna mushkil banati hai — ise "arrow code" ya "pyramid of doom" bhi kehte hain (indentation ek pyramid jaisi banti hai). Isse bachne ke liye "early return" pattern use karo — jaldi return/continue kar do jab condition match na kare, taaki main logic flat rahe.

if (age >= 18) {
  if (hasID) {
    System.out.println("Entry allowed");
  } else {
    System.out.println("ID chahiye");
  }
} else {
  System.out.println("Underage");
}
💡Tip: Agar tumhara code 3+ level deep nested if-else ban raha hai, ruk kar socho — kya ise separate methods mein todna ya early-return pattern use karna better hoga? Zyadatar time haan.

Simple if-else jo sirf ek value assign kar raha hai, use ternary operator se ek line mein likha ja sakta hai — code chhota aur kabhi-kabhi zyada readable ho jaata hai. Lekin ternary ko chain (nested ternary) karna — jaise a ? b : c ? d : e — bahut confusing ho jaata hai aur normally avoid karna chahiye, chahe short lagta ho.

Rule of thumb: ternary tab use karo jab tum sirf "ye value ya wo value" decide kar rahe ho. Agar action (print, method call, multiple statements) karna hai, normal if-else better hai.

String result = (marks >= 40) ? "Pass" : "Fail";
// Avoid: nested ternary jaise ye padhna mushkil hai:
// String grade = (m>=90) ? "A" : (m>=75) ? "B" : (m>=60) ? "C" : "F";

Sabse common galti: == ki jagah = likh dena (assignment vs comparison). Achhi baat ye hai ki Java mein if(x = 5) jaisa code compile hi nahi hoga (kyunki = ek int return karta hai, boolean nahi) — ye C/C++ ke silent bug se bahut better hai jaha aisa code chup-chaap chal jaata hai.

Doosri galti: "dangling else" confusion — else hamesha sabse nazdeeki (most recent) if se juda hota hai, chahe indentation kuch bhi dikhaye. Isliye braces {} use karna hamesha safe hai chahe ek hi statement ho — indentation compiler ke liye kuch matlab nahi rakhti, sirf insaan ke padhne ke liye hai.

Teesri galti: String ko == se compare karna (if (name == "Aarav")) — ye reference compare karta hai, content nahi. Strings ke liye hamesha .equals() use karo.

⚠️Common Mistake: if (name == "Aarav") likhna ek bahut common beginner mistake hai — ye kabhi-kabhi "accidentally" kaam bhi kar jaata hai (String Pool ki wajah se), jisse bug production mein pakde jaate hain. Hamesha name.equals("Aarav") likho.