תנאים (if / switch)
מה זה תנאי?
תנאי הוא מבנה שמאפשר לתוכנית לבחור בין אפשרויות שונות על פי מצב. אם משהו נכון - עשה X, אחרת - עשה Y.
if
if (condition) {
// קוד שיורץ אם התנאי נכון
}
דוגמה:
int age = 20;
if (age >= 18) {
System.out.println("אתה בוגר");
}
if / else
if (condition) {
// אם נכון
} else {
// אם לא נכון
}
דוגמה:
int score = 75;
if (score >= 60) {
System.out.println("עברת");
} else {
System.out.println("נכשלת");
}
if / else if / else
כשיש יותר מ-2 אפשרויות:
int grade = 85;
if (grade >= 90) {
System.out.println("מצוין");
} else if (grade >= 80) {
System.out.println("טוב מאוד");
} else if (grade >= 70) {
System.out.println("טוב");
} else if (grade >= 60) {
System.out.println("מספיק");
} else {
System.out.println("נכשל");
}
חשוב: הסדר חשוב! Java בודקת את התנאים מלמעלה למטה, ועוצרת בראשון שמתקיים.
תנאים מקוננים
if (age >= 18) {
if (hasLicense) {
System.out.println("יכול לנהוג");
} else {
System.out.println("צריך רישיון");
}
} else {
System.out.println("עדיין קטין");
}
תנאים מורכבים
if (age >= 18 && hasLicense) {
System.out.println("יכול לנהוג");
}
if (day.equals("שבת") || day.equals("ראשון")) {
System.out.println("סוף שבוע");
}
if (!isLoggedIn) {
System.out.println("התחבר תחילה");
}
האופרטור הטרנרי
קיצור ל-if/else:
String status = (age >= 18) ? "בוגר" : "קטין";
int max = (a > b) ? a : b;
int absValue = (n < 0) ? -n : n;
switch - תנאי מרובה מצבים
כשיש הרבה אפשרויות ברורות - switch יכול להיות נקי יותר:
int day = 3;
switch (day) {
case 1:
System.out.println("ראשון");
break;
case 2:
System.out.println("שני");
break;
case 3:
System.out.println("שלישי");
break;
case 4:
System.out.println("רביעי");
break;
case 5:
System.out.println("חמישי");
break;
case 6:
System.out.println("שישי");
break;
case 7:
System.out.println("שבת");
break;
default:
System.out.println("לא תקין");
}
חשיבות ה-break
בלי break, Java "נופלת" ל-case הבא:
int x = 1;
switch (x) {
case 1:
System.out.println("אחד");
// בלי break!
case 2:
System.out.println("שתיים");
break;
}
// פלט: אחד\nשתיים
לפעמים זה שימושי בכוונה:
case 1:
case 2:
case 3:
System.out.println("בין 1 ל-3");
break;
switch עם String (מ-Java 7)
String command = "START";
switch (command) {
case "START":
System.out.println("מתחיל...");
break;
case "STOP":
System.out.println("עוצר...");
break;
default:
System.out.println("פקודה לא מוכרת");
}
switch expression (מ-Java 14)
תחביר חדש וקצר יותר:
String name = switch (day) {
case 1 -> "ראשון";
case 2 -> "שני";
case 3 -> "שלישי";
default -> "לא תקין";
};
אין צורך ב-break, אפשר להחזיר ערך ישירות.
מתי להשתמש ב-if ומתי ב-switch
- if / else - תנאים מורכבים, השוואות (
>,<,>=), שילובים לוגיים - switch - כשבודקים ערך אחד מול הרבה אפשרויות שוות (
==)
דוגמה מלאה: מחשבון פשוט
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("מספר ראשון: ");
double a = scanner.nextDouble();
System.out.print("פעולה (+, -, *, /): ");
char op = scanner.next().charAt(0);
System.out.print("מספר שני: ");
double b = scanner.nextDouble();
double result = 0;
boolean valid = true;
switch (op) {
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/':
if (b == 0) {
System.out.println("אי אפשר לחלק באפס");
valid = false;
} else {
result = a / b;
}
break;
default:
System.out.println("פעולה לא תקינה");
valid = false;
}
if (valid) {
System.out.println("תוצאה: " + result);
}
scanner.close();
}
}
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה קורה ב-
switchישן אם שוכחיםbreak?הצגת התשובה
תשובה א. בלי break הקוד ממשיך לבצע גם את ה-case שאחריו (fall-through). ב-switch עם חצים (->) זה לא קורה.
-
מה הביטוי השקול ל-
if (x > 0) y = 1; else y = -1;?הצגת התשובה
תשובה ב. האופרטור המשולש: תנאי ? ערך-אם-אמת : ערך-אם-שקר.