2014-11-22 4 views
0

호 얘들 아,이 코드에서이 이상한 문제가 발생 해요 :자바 루프 매우 이상한 행동

CubicInterpolation cInterp = new CubicInterpolation(x,y,1); 
    int step = 20; 
    int xp = (int) cInterp.getXmin(); 

    int xMax = (int) cInterp.getXmax(); 

    while(xp <= xMax) 
    { 
     int xC = xp; 
     xp = xp + step; 
     double yp = cInterp.interpolate(xC); 
     drawPoint(xC, (int) yp, 2); 
    } 

가의 루프 XP에서 이전 = 128을 가정 해 봅시다; 그것은 루프에서 증가하지만 처음으로 루프가 완료되면 xp는 128입니다 !! 그래서 루프가 끝나지 않고 스택 오버 플로우가 발생했습니다. 누군가 나에게 이렇게 이상한 행동을 설명 할 수 있습니까? 감사합니다

+1

이것은 스택 오버 플로우가 아니며 무한 루프가됩니다. 너의 문제는 다른 곳에있다. NB :'a = a + b'는 대개'a + = b'로 쓰여집니다. –

+0

예 처음에 나는 xp + = step을 가졌지 만,이 오류가 생겨서 다르게 쓰려고 시도했습니다. – rickyalbert

+1

'xp'와'xMax'의 값은 무엇입니까? –

답변

0

주석으로 interpolatedrawPoint에 통화를 (즉, 3, 4 당신의 while 루프 라인) 루프가 조만간 종료됩니다 xpxMax의 값에 따라와. 그렇다면 이전에 주석 처리 된 두 줄 중 하나의 주석을 정확히 없애고 두 경우 모두 어떤 일이 발생하는지 확인하십시오.