פורסם 2007 בפברואר 2818 שנים מחבר א. איך עובדים עם הדיבגר שורה שורה? (אף פעם לא ניסיתי..)ב. מה עושה הפונקציה public int hashCode() {return hour*100 + minute;}
פורסם 2007 בפברואר 2818 שנים א. שימי breakpoint איפה שאת רוצה בקוד (כפתור ימני בקוד ו add breakpoint או משהו כזה). תריצי את הקוד במצב debug (החיפושית במקום החץ הירוק). כאשר הוא יגיע לנקודת ה breakpoint הוא יבקש להיכנס למבט דיבג, תסכימי. אז יהיה לך למעלה חצים של step into ו step out ו step over שמאפשרים לך לשלוט באיך להמשיך לרוץ. (במבט דיבאג יש גם כלים כמו לעקוב אחרי משתנים וכו').ב. הפונקציה הזו קשורה למיפוי של אובייקטים תחת מבנים ב Java מסוג Hash (ערבול, נושא שאולי את מכירה). זה קשור לקונבנציה שאובייקטים ב Java שמחזירים true תחת equals חייבים ש hashCode יתן ערך מיפוי (המספר שהו מחזיר) זהה. יש מצב שבקוד שלך (אם את לא משתמשת במבני ערבול) לא תהיה אף בעיה, אבל בגלל ששינינו את equals מומלץ לשנות גם את זה.
פורסם 2007 בפברואר 2818 שנים מחבר תודה אבל זה לא עובד.הפונקציה GETTOALRM מחזירה טיפוס בוליאני וזה לא מסתדר...
פורסם 2007 בפברואר 2818 שנים מחבר זה כותב לי (על שינוי של הזה):if (t.getTimeClock().equals(kivnclock.TimeToAlarm()))כך: The method equals (Object) in the type String is not applicable for the argument (boolean) זוהי פונקציית TimeToAlarm (נותנת את הזמן 15 שניות אחרי השעה אליה כוון השעון כדי שאם שמתי שעון עכשיו- הוא יצלצל עוד 15 שניות)public synchronized boolean TimeToAlarm() { if(timeAlarm.minute<45) { timeAlarm.minute = timeAlarm.minute+15; } else { timeAlarm.minute = timeAlarm.minute-45; timeAlarm.hour = timeAlarm.hour+1; } if(timeClock==timeAlarm) { return true; } else { return false; } }
פורסם 2007 בפברואר 2818 שנים התרגיל הזה זה במסגרת קורס ב JAVA בבית ספר ?בכל מקרה, לא ראיתי את כל השורות, תשני את:if (t.getTimeClock().equals(kivnclock.TimeToAlarm()))לif (kivnclock.TimeToAlarm())ובקוד של TimeToAlarm תשני אתif(timeClock==timeAlarm)ל if(timeClock.equals(timeAlarm))
פורסם 2007 בפברואר 2818 שנים מחבר הגדרת השעון שלי מחולקת לשני קבצים Clock ו Time (בו מוגדרות הפונקציות)איפה אני שמה את הפונקציה EQUAL ?? אם בקובץ CLOCKאני צריכה לעשות לה קריאה בפונק Time ואז מה הפונקציה הזו תקבל???
פורסם 2007 במרץ 118 שנים את צריכה לממש את הפונקציה equal בכל מקום שאת לא רוצה שהיא תתנהג כמו == . הנה דוגמא שכתבתי ואולי תעזור להבין את ההבל בין השוואת מיקום אובייקט למצב אובייקט:public class atest{ int an_field; public boolean equals(Object other) { if (this == other) return true; if (!(other instanceof atest)) return false; return (an_field == ((atest)other).an_field); } public static void main(String[] args) { atest a, b, c, d; // this are REFERENCES to objects, not objects themselves. // a REFERNCE is a kind of pointer to an object. a = new atest(); // a points to a new object in memory. b = a; // b points to the same object that a points to. c = new atest(); // c points to a new object in memory. d = new atest(); a.an_field = 1; c.an_field = 1; d.an_field = 2; if (a==b) // this is true, since both refrences point to same object/place in memory. System.out.println("a==b"); else System.out.println("a!=b"); if (a==c) // this is false, since each reference points to another object in memory. System.out.println("a==c"); else System.out.println("a!=c"); if (a==d) // this is false, since each reference points to another object in memory. System.out.println("a==d"); else System.out.println("a!=d"); // what did we learn ? that altough that both A and C have the same state, they aren't // the same object in memory, and thus == returns false. // inorder to compare 2 objects state, we need to implmement our own equals that // modifies the default behaviour of equals is ==. if (a.equals(b)) // this is true, since both refrences point to same object/place in memory. (which has the same state as itself) System.out.println("a equals b"); else System.out.println("a doesn't equal b"); if (a.equals(c)) // this is true, since each reference points to another object in memory. (but the object have the same state) System.out.println("a equals c"); else System.out.println("a doesn't equal c"); if (a.equals(d)) // this is false, since each reference points to another object in memory. (and their state is diffrent, one has an_field with 1 and the other with 2) System.out.println("a equals d"); else System.out.println("a doesn't equal d"); }}
פורסם 2007 במרץ 118 שנים מחבר תודה הבנתי את הענייןשל השוואת אובייקטים.אבל -השעון מעורר לא פועל לי. יש לי בעיה עם הפונקציה TIMETOALARM.אני רוצה שהפונקציה תבדוק עם השעה שכיוונתי בשעון מעורר+ 15 שניות היא השעה עכשיו בשעון (ולא שתכוון עכשיו את השעון מעורר לעוד 15 שניות) ולכן- שיניתי אותה והשתמשתי במשתנה עזר, אבל- זה לא פועל בכלל? ???מה לא טוב?public synchronized boolean TimeToAlarm() { Clock ezer = new Clock(timeAlarm); if(ezer.minute<45) { ezer.minute = ezer.minute+15; } else { ezer.minute = ezer.minute-45; ezer.hour = ezer.hour+1; } if(timeClock.equals(ezer)) { return true; } else { return false; } }
פורסם 2007 במרץ 118 שנים על פנוי זה נראה בסדר (אם כי בזבזני נוראה בכל פעם ליצור אובייקט חדש, במיוחד אם הפונקציה הזו נקראת הרבה פעמים), יכול להיות שהבעיה במקום אחר..
פורסם 2007 במרץ 118 שנים מחבר הוספתי עוד משתנה של שעון מעורר כדי שאם המשתמש ירצה לכוון את השעה בשעון אפילו עד שעדיין לא הגיע זמן הצלצול של השעון.נראה לי שהבעיה היא בתנאי if (alarm.TimeToAlarm())איך אני בודקת אם הוא נכנס לתנאי הזה? (אין כזה דבר ADD BREAKPOINT?)
פורסם 2007 במרץ 118 שנים ליד שורות הקוד בלבן, יש אזור בצד שמאל אפור כזה, תלחצי כפתור ימני עליו ויהיה לך Toggle Breakpoint לשורה הנוכחית.
פורסם 2007 במרץ 118 שנים מחבר לקראת סיום... התגלו לי שתי בעיות:<מצורף שוב הקובץ כי עשיתי כל מיני שינויים>1. כשהשעון מעורר מצלצל יש השהיה של השעון -> איך אפשר שהוא ימשיך לעבוד??? (ושההודעה שהגיע הזמן תהבהב בשדה טקסט?)2. אם אני מכוונת את השעון מעורר ועד שהגיע הזמן שלו לצלצל כיוונתי את השעון הפנימי השעה של השעון מעורר משתבשת. למה זה? [attachment deleted by admin]
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.