
age <= 0, מציגה הודעת שגיאה וקולטת מחדש את הגיל. החזרה נמשכת עד שהמשתמש מזין ערך חיובי.num % 10.הטקסט המלא של הדקות הראשונות בהרצאה «לולאת While בג'אווה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אנחנו מגיעים לקוד ואנחנו רוצים לראות איך לבצע בדיוק את הפרזנטציה שראינו מקודם בעזרת לולאות. ישנן מספר לולאות שאנחנו יכולים להשתמש בהן ואנחנו כמובן הולכים ללמוד את כולן.
הלולאה הראשונה שאנחנו הולכים ללמוד נקראת לולאת while והיא באמת מתאימה לסיטואציה שראינו. הסיטואציה אומרת דבר כזה, אנחנו רוצים לקלוט מהמשתמש גיל חוקי.
אם הוא מכניס גיל חוקי הכל בסדר ובוא נניח אנחנו אנחנו יכולים לעשות משהו עם הגיל ולהציג לו בין כמה הוא יהיה בשנה הבאה. אבל אם הגיל הוא לא חוקי אנחנו רוצים לדרוש מהמשתמש להכניס עוד פעם גיל, לבקש ליתר דיוק. יכול להיות שבפעם השנייה הוא גם לא חוקי וכדומה, אנחנו רוצים לולאה שתאפשר לבצע את הקטע קוד הזה שוב ושוב ושוב.
אז בואו נראה איך זה מתבצע. הדבר הראשון שאנחנו רוצים זה שיהיה לנו איזשהו משתנה שנוכל להחזיק בו את הגיל. הדבר הבא שאנחנו רוצים זה לבקש מהמשתמש את הגיל שלו.
אז בואו ניגש ונדפיס please enter your age ואנחנו רוצים כמובן לקלוט את הגיל אז בואו ניגש ל-age ונכניס לתוכו את console.nextint בצורה כזאת עכשיו יכול להיות מצב שהגיל הוא לא חוקי כלומר שלילי כאן אנחנו פשוט משתמשים עם פקודת while ובתוך הסוגריים אנחנו כותבים את התנאי לבדיקה h קטן שווה 0. זאת אומרת אם הגיל קטן שווה 0 נניח מינוס 8 מינוס 17 או אפילו 0 אז הביטוי
הזה יהיה true. תלונת וייל אומרת דבר כזה אם יש לי בסוגריים true אני מבצעת את הפקודות פעם אחת וחוזרת לבדוק שוב פעם את התנאי. אם שוב פעם יש true אני ממשיכה אותו דבר מבצעת את הפקודות האלה פעם אחת וחוזרת לבדוק שוב פעם את התנאי.
ואנחנו באמת רואים כאן פעילות של לולאה, לופ, משהו שמתבצע שוב ושוב ושוב בלופ. אם מה שיש כאן הוא false, זאת אומרת הגיל כמובן הוא חיובי, ולכן הוא לא קטן או שווה לאפס, אז הלולאה נשברת, זה נקרא, ואנחנו ממשיכים כאן בתוכנית ויכולים
לבצע עוד פעולות. בואו פשוט בתוך הלולאה, אנחנו יודעים שאם אנחנו נכנסנו בעצם ללולאה אז הגיל הוא לא חוקי, אז בואו נציג למשתמש cse out של h is illegal, זאת אומרת must, בואו נגיד דבר כזה h is illegal, please re-enter your h, ואפילו אנחנו יכולים להגיד לו h can't or
must be positive. נעשה פה איזה כזה דבר, והנה יש לנו הודעה שאנחנו יכולים להציג למשתמש. עכשיו מה שאנחנו צריכים לבצע זה לקלוט עוד פעם את הגיל כי אם אנחנו לא נקלוט פה שוב את הגיל אז המערכת תבדוק את אותו הגיל של מקודם שכמובן אם נכנסנו ללולאה הוא היה שלילי או 0 ואנחנו נבצע שוב ושוב ושוב בלי הפסקה
את הלולאה הזאת וזה כמובן מצב לא טוב ברוב המקרים וזה נקרא לולאה אינסופית. אם אנחנו רק כאן כבר נריץ וננסה לראות מה בעצם יתרחש אם היוזר מבצע משהו לא חוקי, בואו נעביר רק את הקונסול פה למטה, אז אם היוזר יכניס מינוס תשע אנחנו רואים שיש לנו לולאה אינסופית וזה כמובן באג במקרה הזה בתוכנית, בואו נעצור את התוכנית ואנחנו רואים שאנחנו צריכים עוד פעם לקלוט
את הגיל מהיוזר. במידה והיוזר הכניס לנו גיל חוקי, בואו נריץ, נכניס מינוס תשע אנחנו רואים שאנחנו מקבלים את השגיאה מינוס שבע אנחנו מקבלים את השגיאה ואם היוזר מכניס גיל חוקי שמונה הכל בסדר והתוכנית הסתיימה בואו נעשה איזה פעילות מסוימת בסוף הלולאה סיס אאוט
ויש לנו כאן נקסט ייר איול בי ואנחנו רוצים להציג לו את ה-age פלוס אחד ויש לנו כאן משהו שמתבצע גם אחרי שהלולאה עצמה הסתיימה. בואו נריץ את זה.
ואם היוזר מכניס גילאים שהם לא חוקיים, אנחנו רואים שהוא מקבל שוב ושוב את הודעת השגיאה, לא משנה כמה פעמים הוא מכניס, ובמידה והוא מכניס גיל חוקי, אנחנו רואים שהתוכנית ממשיכה והוא מקבל את ההודעה בסיום הלולאה.
בואו נראה דוגמה נוספת, אבל הפעם נשתמש באיזשהו תנאי הפוך למה שעשינו עכשיו. בואו נשים את כל זה בהערה, ניגש לכאן ובואו נעשה דוגמה שבה אנחנו רוצים לקלוט מהמשתמש מספרים כל עוד הוא מכניס מספר חיובי ועבור כל מספר שהמשתמש מכניס אנחנו רוצים להציג את הספרה הימנית שלו.
אז יש לנו כאן צורך באיזשהו number, נעשה את זה אפילו בצורה כזאת. אני אגיד למשתמש enter numbers for ending Enter a non-positive number, non-positive לא חיובי, זאת אומרת אפס ומטה, שלילי או אפס.
וכבר כאן אנחנו יכולים לבצע console.next int, וכעת אנחנו רוצים להיכנס לאיזושהי הילולת while כל עוד num גדול מאפס, זה בדיוק התנאי שאנחנו רוצים.
מה שאנחנו רוצים לעשות זה לקחת את ה-right דיג'יט שלו, זה כמובן num module 10 ולהציג right digit, נציג את ה-right digit.