פורסם 2008 באוקטובר 1017 שנים שלום לכולם קודם כל ! אני חדש באתר, תלמיד יב' בתיכון שוהם, לומד JAVA במגמת מחשבים 5 יח"ל. יש לי בעיה קטנה, מקווה שתעזרו לי ממש בJAVA את המחלקה הבאה : "הפעולה מקבלת כפרמטר מערך של דיסקים ומחזירה את סה"כ עלות הדיסקים שהוציא לאור הזמר שלומי שבת" public static double calculateDiscPrice(Disc[] a) עוד קצת פרטים : עצם ראשון - Singer. תכונות : firstName lastName age gender עצם שני - Disc. תכונות : discName Singer (העצם הראשון) numOfSongs price style אני לעשות בדיוק כל שלב בפעולה הבעיה שחסרה לי הפונקציה שאני מוציא מתוך עצם, עצם אחר בשביל להגיע לתכונה שלו. if(_________.compareTo("shlomi")==1)price = price + a.price; כמובן שזה בתוך לולאה ואחרי שהצהרתי על price, אבל איך אני מגיע לתכונה שנמצאת בתוך עצם שמתפקד כתכונה בעצם אחר ? להגיע לfirstName של Singer מתוך a שהוא מערך של דיסקים (Disc). תודה רבה על העזרה
פורסם 2008 באוקטובר 1017 שנים אתה מתכוון לזה?if(discObj.singerObj.firstName.compareTo("shlomi")==1)price = price + discObj.singerObj.price;כש discObj זה השם של אובייקט הדיסק (כנראה a) ו singerObj זה השם שקבוע ל Singer בתוך Disc ואותו דבר על firstName
פורסם 2008 באוקטובר 1017 שנים מחבר האובייקט שאליו אני מנסה להגיע לא חייב להיות public, הוא מוצהר כprivate וזה בסדר.בכיתה המורה נתן משהו שצריך לכתוב אחרי a. כדי להוציא את העצם Singer משם ואז לרשום .fNameif(a[i].Singer.fname.compareTo("שלומי")==1)העתקתי מה שרשמת רק עם המשתנים כמו שנתנו בתרגיל, והוא מסמן לי את Singer בקו אדום מקוקו ...תודה על העזרה בכל מקרה, עוד מישהו יכול לנסות ?
פורסם 2008 באוקטובר 1117 שנים כי Singer הוא שם של class, אתה צריך לתת את השם של האובייקט בתוך Disc מסוג Singer.
פורסם 2008 באוקטובר 1117 שנים מחבר כי Singer הוא שם של class, אתה צריך לתת את השם של האובייקט בתוך Disc מסוג Singer.השם של העצם Singer, הוא singer..שיניתי את האות הגדולה לאות קטנה וזה החליף לי את הטעות מsinger ל-fname שאחריו.=\
פורסם 2008 באוקטובר 1117 שנים מה השגיאה בכלל?בכל מקרה, לא הבנתי איך יכול להיות ש private זה בסדר, אלא אם אתה עובד עם מתודות שמחזירות ומשנות את המשתנה.
פורסם 2008 באוקטובר 1117 שנים מחבר סתם ככה לא, אתה צודק, אבל יש איזשהו פונקציה שכן מאפשרת להגיע אליו. אני אשאל את המורה שלי ואחזור לעדכן אותכם שתלמדו משהו חדש גם אתם
פורסם 2008 באוקטובר 1117 שנים אתה יכול או להגדיר אותו המשתנה public ואז תוכל לגשת אליו ישירות, או לחלופין לעשות 2 פונקציות public הידועות כ getter ו setter ולהשתמש בהן.
פורסם 2008 באוקטובר 1117 שנים מחבר לא .. לצערי זו גם לא השיטה הזו =\והמורה שלי לא רוצה להביא לי את הפונקציה שאני מחפש כי הוא אומר שאני לא מקשיב בשיעור אז מגיע לי חחח ..
פורסם 2008 באוקטובר 1217 שנים אם ה singer בתוך DISKהוא private אתה לא יכל לגשת אליו מתוך ה main.אם אתה לא רוצה/יכל לעשות SETTER ו/או GETTER , תבנה מטודה שמשווה בין שני אובייקטים לפי ה singer=> תעמיס את המטודה compareTo של דיסק שתשווה בין שני דסקים, הם שווים אם יש להם את אותו סינגר ( לפי ערך, לא לפי רפרנס). תצטרך גם בנאי שיבנה אובייקט של DISK כשהוא מקבל מחרוזת של שם SINGER.פתרון עקום, אבל זה מה יש.
פורסם 2008 באוקטובר 1217 שנים מחבר חחחח תאמת שלא הבנתי הרבה ממה שרשמת .. אין לי מושג מה זה getter \ setter, מטודה, רפרנס, בנאי .. הרבה ביטויים שאנחנו לא משתמשים בהם עדיין .. אני מנסה לברר איך המורה שלי עשה את זה בכיתה ואני אחזור אליכם, תודה רבה בכל מקרה
פורסם 2008 באוקטובר 1217 שנים תנסה לרשום פה את הקוד( או לפחות את החלקים הרלוונטים -> הגדרות של הקלאס SINGER ו DISK ), שיהיה לאנשים קל יותר להבין מה בדיוק אתה מנסה לעשות ואיפה הטעות.
פורסם 2008 באוקטובר 1317 שנים זאת הפונקציה, בדקתי והיא עובדתpublic static double calculateDiscPrice(Disc[] a) { float totalPrice = 0.0f; for(int i = 0; i < a.length;i++) { if(a.getSinger().getFirstName().compareTo("shlomi") == 0) { totalPrice += a.getPrice(); } } return totalPrice; }צירפתי קובץ עם התוכנית המלאה[attachment deleted by admin]
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.