עזרה| שגיאה לא מובנת Java - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה| שגיאה לא מובנת Java


Statement

Recommended Posts

שלום

עשיתי את השיטה הזאת -

כתבו שיטה במחלקה DrawingBoard בשם getMax שתחזיר את הצורה (מחלקה Shape) בעלת השטח המקסימלי מבין כל הצורות שבלוח. הדפסת פרטי האובייקט המוחזר תהיה בשיטה הראשית.

יש לי שיטת עזר בשם compare שבודקת למי יש את השטח הגדול ביותר

s זה מערך של Shape

public Shape getMax(){	int i;
int x;

for( i=0; i<counter;){
for (x=1;x<counter;){
if(s[i].Compare(s[x])==1)
x++;
else if(s[i].Compare(s[x])==-1)
i++;
else
x++;
}
if(s[i].Compare(s[x])==1)
return s[i];
else if (s[i].Compare(s[x])==-1)
return s[x];


else return s[i];

}




}

איפה שרשום getMax יש לי אדום(שגיאה) ורשום לי שאני צריך להחזיר Shape...

מה אני צריך לעשות?

כל המקומות שיש שם את החלקים מהמערך שמוחזרים הם לא Shape גם ??

תודה בכל מקרה

אילי

קישור לתוכן
שתף באתרים אחרים

תעיף את ה-else האחרון

זה לא קשור אחי, פשוט שיטח העזר Compare בנויה בצורה שהיא מחזירה 1 אם האובייקט המפעיל גדול

2 אם האובייקט המופעל גדול

3 אם הם שווים

אז אני צריך להשאיר את זה

לדעתי אני פשוט מחזיר הפנייה אבל אני לא יודע איך לסדר את זה...

- - - תגובה אוחדה: - - -

תעיף את ה-else האחרון

זה לא קשור אחי, פשוט שיטח העזר Compare בנויה בצורה שהיא מחזירה 1 אם האובייקט המפעיל גדול

2 אם האובייקט המופעל גדול

3 אם הם שווים

אז אני צריך להשאיר את זה

לדעתי אני פשוט מחזיר הפנייה אבל אני לא יודע איך לסדר את זה...

זה השיטה compare

public int Compare(Shape s){	if (Area() >s.Area())
return 1;

else if(Area() <s.Area())
return -1;
else return 0;




}

קישור לתוכן
שתף באתרים אחרים

הבעיה היא שעשית return רק בתוך ה-for. הקומפיילר דורש שבכל מסלול אפשרי של ביצוע של הפונקציה, הוא יגיע ל-return. לקומפיילר אין דרך לדעת מראש אם התנאי שב-for יתקיים או לא, ולכן הוא לא יכול להיות בטוח ב-100% שתגיע ל-return הזה.

(בכלל, לא ברור לי מה הצורך ב-for החיצוני)

חוץ מזה, שני טיפים כלליים:

א. תדאד להזחות מסודרות של הקוד.

ב. תמיד תמיד תמיד אחרי if ו-else שמים סוגריים מסולסלים, גם אם זו רק פקודה אחת. זה הופך את הקוד להרבה יותר קריא.

ג. יש לך קריאות מיותרות ל-compare - אתה קורא לה פעמיים בכל איטרציה במקום רק פעם אחת. תשתמש במשתנים.

ד. להבא, אל תאמר לנו רק "יש שגיאה". תאמר מה השגיאה בדיוק.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...