עבור לתוכן

בעיה מוזרה בקוד - JAVA

Featured Replies

פורסם

אהלן,

אני בשלבים אחרונים של תכנות משחק קטן ויש לי בעיה מאוד מוזרה.

משום מה הקומפיילר מחליט כמעט תמיד (במיוחד בהרצה הראשונה של הלולאה) לדלג על התנאי שבלולאה.

הקוד:


while ( turn ) {
if (mX != lastClick && empty [pr] [pc]) {
board [pr] [pc] = 0 ;
empty [pr] [pc] = false ;
int [] mouse = findPlaceToDraw ( findPlaceOnBoard (mX,mY) ) ;
p.add (o[i]) ;
o.setBounds(mouse [0], mouse [1], d, d);
lastClick = mX ;
turn = false ;
}
}
[/i]

התנאי הראשון מתקיים אך השני ( empty [pr] [pc]) לא מתקיים והקומפיילר מכל מקרה מריץ את הקוד.

מה יכולה להיות הסיבה?

תודה :)

פורסם

מה הערכים של mX, lastClick, empty בזמן שהוא "מדלג" על התנאי?

קשה לעזור עם קטע קטן מהתוכנית.

פורסם
  • מחבר

למשל הוא מדלג כשהמצב כזה:

mX = 497

lastClick = 0

empty [pr] [pc] = false

פורסם

נכון, הוא אמר שהתנאי לא מתקיים ולמרות זאת הקוד רץ.

פותח הת'רד: אתה בטוח שהתנאי אינו מתקיים? שמת breakpoint בדיוק בשורה הראשונה שאחרי ה-if ווידאת שם שהתנאי אכן false?

פורסם

כדאי במקרים כאלה לבצע הדפסות של הערכים.

פורסם
  • מחבר

נכון, הוא אמר שהתנאי לא מתקיים ולמרות זאת הקוד רץ.

פותח הת'רד: אתה בטוח שהתנאי אינו מתקיים? שמת breakpoint בדיוק בשורה הראשונה שאחרי ה-if ווידאת שם שהתנאי אכן false?

כשאני שם ברייק פוינט לפני הלולאה, הוא לא מדלג.

לעומת זאת כשאני רק מדפיס לפני הלולאה לפני התנאי ואחרי התנאי את הערכים, התנאי לא אמור להתקיים והקוד כן רץ..

פורסם

כדאי שתבדוק קצת יותר בדקדוק את הערכים.

ארכיון

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

דיונים חדשים