if-else (Decision Making)
if block tabhi chalta hai jab condition true ho. Agar false ho, to else block chalta hai.
Tum kai conditions bhi laga sakte ho else if se — jaise ek ke baad ek gate check karna.
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 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");
}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.