
switch ובסוגריים את שם המשתנה, ואז מגדירים כל אפשרות בעזרת case והערך שלה, ואחריה נקודתיים.break. בלעדיו הריצה ממשיכה לבדוק את ה-case הבאים.default שמטפל בכל ערך שלא נכלל באף case. בשיעור הוצגה הודעה כמו out of range.הטקסט המלא של הדקות הראשונות בהרצאה «משפט SWITCH בג'אווה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בשיעור הקודם דיברנו על התנאי הקונדישיונל סטייטמנט, התנאי הבוליאני if, else, if, else. היום בשיעור הקרוב נכיר עוד תנאי שהוא ה-switch, תנאי בוליאני משוכלל.
מתי נשתמש בתנאי הבוליאני switch ולא ב-if, else, if או else? כאשר יש לנו יותר מצבים ויותר התניות ולא נרצה לכתוב לכל אחד ואחד את הסינטקס הארוך יחסית של ה-if תנאי בוליאני, else if תנאי בוליאני, עוד else if תנאי בוליאני ועוד else if תנאי
בוליאני. בוא נדמה מצב שבו נצטרך את התנאי בעצם המשוכלל יותר, הסוויץ', ולא נרצה להשתמש ב-else if, נדמה את זה במצב כזה שאנחנו רוצים בעצם ליצור מערכת תנאים שתתרגם לנו את
המספר איזשהו מספר כלשהו אינטיג'ר ליום בשבוע לדוגמה אם האינט האינטיג'ר יהיה אחד התשובה או ההדפסה צריכה להיות סנדיי וכך הלאה אם הוא שתיים הוא צריך להיות מאנדיי ולהמשיך הלאה בוא נתחיל ונראה איך אנחנו כותבים את זה נקבע איזשהו אינט
ונקרא לו i day אני נותן לו שם לאותו אינטיג'ר שאני רוצה לבדוק את התוכן שלו אני מתחיל ב-i שזה קיצור של אינטיג'ר ואיזשהו שם שמייצג באמת מה אני רוצה לבדוק בתוכו וניתן לו ערך 1. אז כרגע מה שאני הייתי צריך לעשות בשיטה הישנה זה if i day שווה שווה 1 אני חייב לעשות פעמיים שווה בהתניה בוליאנית ולא שווה אחד שבעצם מדבר
על השמה. בתנאי בוליאני אנחנו חייבים לציין את השווה שווה פעמיים. If i day שווה שווה אחד אז אני פותח סוגריים מסולסלות, יורד שורה ועושה את ה-CISO, Control Space, ואני כותב פה את הביטול סאן דיי.
אבל מה יקרה אם אני צריך להתמודד עם כל שבע המספרים של הימים אני צריך בעצם לעשות פה להמשיך את הדעות ולכתוב את סעיף IDay ==2 ושוב לפתוח את הסוגריים ולבצע את ה-System Out ולהדפיס Monday וכך הלאה בכל שבעת הימים.
בשיטה הזאת היא יחסית ארוכה ומסורבלת וה-Java מציע לנו איזשהו סינטקס אחר בואו נמחק את השיטה הזאתי או נשים אותה בהערה אני מסמן את הקטע קוד שאני רוצה ולוחץ control slash ואז כל הקוד שכתבתי הופך להערה והג'אווה אומר לנו האקליפס אומר לנו עשינו השמה למשתנה אבל לא השתמשנו בו תכף אנחנו משתמשים בו נכתוב את
המילה השמורה switch וניתן פה בסוגריים את השם משתנה שאותו אנחנו רוצים לבדוק איידן ופה בעצם אנחנו מתחילים את התהליך של הסוויץ'.
סוויץ', המשמעות שלו זה מתג, איזשהו התחלה של מעבר על אפשרויות ואנחנו כרגע עושים, מתחילים לציין את האפשרויות. הסינטקס מבחינת הסוויץ' הוא לכתוב case ואת הערך שאנחנו מצפים לו.
לדוגמה אחד היינו יכולים לעשות שתיים או איזשהו מספר או איזשהו טקסט אבל אנחנו בעצם בגלל שאנחנו מתייחסים באינטג'ר ואנחנו רוצים להתייחס לאחד אני צורך בגרשיים ואנחנו כותבים case i day שווה אחד נקודותיים ואני בעצם מדפיס את הביטוי הזה אוקיי חשוב מאוד לעשות break מיד אחרי הביצוע פעולה.
ועל מנת לעצב את הקוד שלנו בצורה מסודרת נעשה ctrl-shift-f ואנחנו רואים שהאקליפס מסדר לנו את הסינטקס בצורה יפה עם הזכה של הטקסט, אינבנטציה של הטקסט בצורה כזאת שקל לנו לראות את הפעולות שאנחנו מבצעים.
אם אנחנו רוצים להמשיך בתהליך אנחנו יכולים לעשות את הפעולה הזאתי, פשוט להעתיק ctrl v ctrl v וכך הלאה ואני עושה אם זה 2 תדפיס monday וbreak מיד אחרי זה אם זה 3 תדפיס tuesday כך בצורה כזאת בעצם אנחנו דואגים שיש לנו טיפול בכל האפשרויות של ימי השבוע אם אני אשנה את ה-i day שלי מ-1 לנגיד 7 אז בעצם מה שיקרה מבחינת התנאי
הבוליאני הוא ייכנס לסוויץ' יגיע לשבע וידפיס סאטר דיי. הדבר היחיד והאחרון שחסר לנו זה טיפול במצב שהאיי דיי שלנו הוא לא נופל בקטגוריה הזאתי לדוגמה אם אני ארשום פה שמונה בעצם לא כיסיתי את האפשרויות האלה אני לא חייב לכסות את כל האפשרויות הקיימות זאת אומרת ברגע שהקייס שלי הוא לא הגיוני או שיש לי בעיה
לזהות את כל האפשרויות אני יכול להוסיף בעצם את ה-case default ככה אני כותב אותו אני עושה נקודותיים ופה אני כותב בעצם את הביטוי סיסו out of range לדוגמה out of range of days אוקיי ואז בעצם בכל פעם שהסוויץ' יקבל לתוכו איזשהו ערך שהוא לא 1 עד 7 הוא יגיע לדפולט וייתן לי את ה-out of range weekdays בעצם כך אני מכסה את האפשרויות של כל האפשרויות שיכולות להגיע לסוויץ'
ובעצם אני יכול להריץ אותו ולבצע. בואו נעשה ריצה לתהליך ואני רואה Out of range weekdays חשוב לזכור בפעולות בסוויץ' זה שאנחנו בעצם חייבים לטפל ב-defaults וחייבים לציין את הברייק לא לשכוח על מנת שהוא לא ימשיך וייכנס בכל היתר זאת אומרת ברגע שהוא נכנס בסוויץ' אחד בקייס אחד אנחנו לא רוצים שהוא
ימשיך ויבדוק את קייס 4 קייס 5 קייס 6 אלא במקרה שאנחנו כן רוצים שהוא ייכנס וכך אנחנו נוריד את הברייק ובעצם הסוויץ' הוא בעצם כמו מפל ובוליאני שהוא בודק האם הוא אחד אם כן או אם לא אני ממשיך לשתיים אני ממשיך לשלוש ממשיך לארבע ברגע שאנחנו משתמשים במילה לשמור אחרי אנחנו יוצאים מהסוויץ' ומפסיקים את התהליך,
אז בואו נשנה את זה ל-7 ונריץ אותו ונראה באמת בקונסול שהוא הדפיס את זה כמו שצריך מבחינתנו את היום והשבוע, ובעצם כך עשינו את התהליך בצורה כזאת שהיא הרבה יותר קלה מלהתחיל לכתוב if, else if, if, else if וכדומה,
אלא בצורת סוויץ' יעיל וטוב.