Description
תרגול 6# – מדיות וערי בירה
התרגול יעסוק במכלים והגדרות גנריות. מטרת התרגול היא להכין תכנית שתקבל קלט מהמשתמש (דרך המקלדת) שיכיל שם של מדינה בעולם, והתכנית תגיב בשם עיר הבירה של אותה מדינה .
באתר נמצא קובץ בשם capitals.txt בו כל שורה היא זוג של “מדינה ; עיר בירה” מופרדים באמצעות נקודה-ופסיק (‘;’). לדוגמא, הנה קטע מן הקובץ:
Azerbaijan;Baku The Bahamas;Nassau Bangladesh;Dhaka Benin;Porto-Novo Bolivia;La Paz
במסגרת התרגיל יש לבצע את הדברים הבאים:
:Capitals מחלקת
1. יש לממש בנאי: ()Capitals בו יש לקרוא את קובץ הטקסט בשלמותו לתוך מיכל מתאים . בסיום יש להדפיס את מספר הרשומות (שורות) שנקראו (ראו דוגמת הרצה.) 2. לממש שיטת חיפוש ( exactMatch( String country המקבלת שם מדינה ומחזירה שם עיר בירה( null אם שם המדינה לא קיים).
3. ממשו את השיטה ( String[] prefixMatch( String prefix המקבלת רמז לשם מדינה (התחלה של שם) ומחזירה מערך של כל השמות הרלוונטים( .null אם לא קיים שם מדינה שמתחיל ברמז.)
:CapitalGame מחלקת
1. שיטה play() שמנהלת את המשחק.
2. יש לקלוט מהמקלדת קלט של המשתמש (שם מדינה.)
3. אם הקלט היה שם של מדינה שנזכרת בקובץ המדינות, לפלוט את שם בירתה.
אחרת להתעלם (אין להבדיל בין אות גדולה לקטה).
4. את פעולות 2 ו- 3 יש לבצע בלולאה שוב ושוב.
5. לסיום על המשתמש להקליד end ואז התוכנית תפסק עם ההודעה: Good bye!
:Lab06Test מחלקת
1. המפעילה את המשחק.
מרצה: דר’ מיכל הורוביץ תכנות מונחה עצמים סמסטר סתיו תשפ”ב מתרגלים: גדי שור ושמעון אושר
להלן דוגמת הרצה:
203 records read.
Enter a country name (“end” to exit): israel The capital of Israel is Jerusalem
Enter a country name (“end” to exit): england The capital of England is London
Enter a country name (“end” to exit): lebanon The capital of Lebanon is Beirut
Enter a country name (“end” to exit): blabla Enter a country name (“end” to exit): end
Good bye!
*שימו לב שיש להקפיד על תצוגת הפלט !יסוח וריווח.
כמה רמזים שיכולים לעזור:
1. אפשר להשתמש ב- Scanner לשם קריאה מהמקלדת כפי שעשינו ב-Atm.
2. אפשר להשתמש במופע אחר של Scanner על מנת לקרוא את קובץ הקלט capitals.txt.
לשם כך צריך “לעטוף” את שם הקובץ במחלקה שמטפלת בשמות קבצים (ומסתירה את ההבדלים בין מערכות הפעלה ומערכות קבצים שונות): מחלקה File, באופן הבא:
File f = new File( “capitals.txt” );
Scanner s = new Scanner( f ); (מותר, כמובן, לבצע את שתי הפקודות בשורה אחת).
3. אפשר גם להשתמש במתודה useDelimiter() של Scanner כדי לציין שגם ‘;’ וגם סוף שורה מפרידים בין מילים: s.useDelimiter( “[; ]” ) 4. כדאי להפוך גם את אותיות הקלט של המשתמש וגם את אלה של שם המדינה לגודל אחיד( case) לפני שמשווים אותם, על מנת למנוע כשלון עקב אי התאמה בגודל האות (למשל, בקובץ כתוב Israel והמשתמש הקליד israel ). חפשו מתודה של String בשם
.toLowerCase()
5. הטיפול הנכון בשלב זה בחריגות (FileNotFoundException) הוא לתת לאקליפס לתקן עבורכם ולבחור תמיד בפתרון הראשון שמוסיף לכותרת השיטה הרלוונטית את הביטוי throws FileNotFoundException וכך גם לשאר השיטות שקראו לשיטה בה נוצרה החריגה… פשוט תזרמו עם האקליפס עד שנדע לטפל בהם נכון בעצמנו.
בהצלחה!




Reviews
There are no reviews yet.