ה*לה פורסם 2007 בפברואר 28 מחבר Share פורסם 2007 בפברואר 28 א. איך עובדים עם הדיבגר שורה שורה? (אף פעם לא ניסיתי..)ב. מה עושה הפונקציה public int hashCode() {return hour*100 + minute;} קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 בפברואר 28 Share פורסם 2007 בפברואר 28 א. שימי breakpoint איפה שאת רוצה בקוד (כפתור ימני בקוד ו add breakpoint או משהו כזה). תריצי את הקוד במצב debug (החיפושית במקום החץ הירוק). כאשר הוא יגיע לנקודת ה breakpoint הוא יבקש להיכנס למבט דיבג, תסכימי. אז יהיה לך למעלה חצים של step into ו step out ו step over שמאפשרים לך לשלוט באיך להמשיך לרוץ. (במבט דיבאג יש גם כלים כמו לעקוב אחרי משתנים וכו').ב. הפונקציה הזו קשורה למיפוי של אובייקטים תחת מבנים ב Java מסוג Hash (ערבול, נושא שאולי את מכירה). זה קשור לקונבנציה שאובייקטים ב Java שמחזירים true תחת equals חייבים ש hashCode יתן ערך מיפוי (המספר שהו מחזיר) זהה. יש מצב שבקוד שלך (אם את לא משתמשת במבני ערבול) לא תהיה אף בעיה, אבל בגלל ששינינו את equals מומלץ לשנות גם את זה. קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 28 מחבר Share פורסם 2007 בפברואר 28 תודה אבל זה לא עובד.הפונקציה GETTOALRM מחזירה טיפוס בוליאני וזה לא מסתדר... קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 בפברואר 28 Share פורסם 2007 בפברואר 28 מה לא עובד ? ואיפה החלקים של קוד הבעייתי ? קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 28 מחבר Share פורסם 2007 בפברואר 28 זה כותב לי (על שינוי של הזה):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; } } קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 בפברואר 28 Share פורסם 2007 בפברואר 28 התרגיל הזה זה במסגרת קורס ב JAVA בבית ספר ?בכל מקרה, לא ראיתי את כל השורות, תשני את:if (t.getTimeClock().equals(kivnclock.TimeToAlarm()))לif (kivnclock.TimeToAlarm())ובקוד של TimeToAlarm תשני אתif(timeClock==timeAlarm)ל if(timeClock.equals(timeAlarm)) קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 28 מחבר Share פורסם 2007 בפברואר 28 הגדרת השעון שלי מחולקת לשני קבצים Clock ו Time (בו מוגדרות הפונקציות)איפה אני שמה את הפונקציה EQUAL ?? אם בקובץ CLOCKאני צריכה לעשות לה קריאה בפונק Time ואז מה הפונקציה הזו תקבל??? קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 במרץ 1 Share פורסם 2007 במרץ 1 את צריכה לממש את הפונקציה 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"); }} קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 במרץ 1 מחבר Share פורסם 2007 במרץ 1 תודה הבנתי את הענייןשל השוואת אובייקטים.אבל -השעון מעורר לא פועל לי. יש לי בעיה עם הפונקציה 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; } } קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 במרץ 1 Share פורסם 2007 במרץ 1 על פנוי זה נראה בסדר (אם כי בזבזני נוראה בכל פעם ליצור אובייקט חדש, במיוחד אם הפונקציה הזו נקראת הרבה פעמים), יכול להיות שהבעיה במקום אחר.. קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 במרץ 1 מחבר Share פורסם 2007 במרץ 1 הוספתי עוד משתנה של שעון מעורר כדי שאם המשתמש ירצה לכוון את השעה בשעון אפילו עד שעדיין לא הגיע זמן הצלצול של השעון.נראה לי שהבעיה היא בתנאי if (alarm.TimeToAlarm())איך אני בודקת אם הוא נכנס לתנאי הזה? (אין כזה דבר ADD BREAKPOINT?) קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 במרץ 1 Share פורסם 2007 במרץ 1 ליד שורות הקוד בלבן, יש אזור בצד שמאל אפור כזה, תלחצי כפתור ימני עליו ויהיה לך Toggle Breakpoint לשורה הנוכחית. קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 במרץ 1 מחבר Share פורסם 2007 במרץ 1 ואיך אני נכנסת לתוך הפונקציה?? (מה שב++C נקרא F11) קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 במרץ 1 Share פורסם 2007 במרץ 1 יש לך למעלה שם במצב דיבאג יקונים של STEP IN STEP OUT וכו'.... קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 במרץ 1 מחבר Share פורסם 2007 במרץ 1 לקראת סיום... התגלו לי שתי בעיות:<מצורף שוב הקובץ כי עשיתי כל מיני שינויים>1. כשהשעון מעורר מצלצל יש השהיה של השעון -> איך אפשר שהוא ימשיך לעבוד??? (ושההודעה שהגיע הזמן תהבהב בשדה טקסט?)2. אם אני מכוונת את השעון מעורר ועד שהגיע הזמן שלו לצלצל כיוונתי את השעון הפנימי השעה של השעון מעורר משתבשת. למה זה? [attachment deleted by admin] קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.