2014-04-11 4 views
0

임의로 생성 된 점의 거리에 대해 최대 MAX 값을 얻지 못하는 것 같습니다. 그 때문에 나는 필요한 가장 긴 거리를 만들 수 없습니다.최대 값이 올바른 값을 반환하지 않음

 for(int i = 0; i < pts.length; i++) { 
      pts[i] = new Point2D(Math.random(), Math.random()); 
      StdDraw.setPenColor(StdDraw.RED); 
      StdDraw.setPenRadius(0.008); 
      pts[i].draw(); 

      for(int j = 0; j < i; j++) { 
       double distance[] = { pts[i].distanceTo(pts[j]) }; 
       for(int k = 0; k < distance.length; k++) { 
        while(distance[k] > max) { 
         max = distance[k]; 
         if(max > 0) { 
          System.out.println(max); 
          StdDraw.setPenColor(StdDraw.BLACK); 
          StdDraw.setPenRadius(0.002); 
          pts[i].drawTo(pts[j]); 
+2

이 코드를 더 형식을 지정하고 나머지 코드를 추가하십시오. 뭔가 빠져있는 것처럼 보입니다 (어쩌면 닫는 중괄호 일 수도 있습니다 ...). –

+0

명확히하기 위해, 당신은 최대 거리를'distance' 안에 포함해야합니까? 세 개의'for 루프 '를 가지고 있는데''max' '를 몇 번 인쇄하고 싶습니까? – ryrich

+0

그래서 최대 거리가 한 번 필요합니다. IF 문이 가장 큰 거리의 선을 그릴 수 있도록 한 번만 인쇄되거나 반환됩니다. – user3395013

답변

1

따라서 가장 안쪽의 루프 내부에서 각 거리를 확인하고 max을 저장하십시오. 그리고 루프가 모두 끝나면 그림을 실행하십시오. 이렇게하기 위해서는 포인트의 인덱스 (i와 j)를 전 세계 어딘가에 저장해야합니다. 따라서 다음과 같이하십시오 :

// declare these guys to keep track of where to draw 
int maxI = 0; 
int maxJ = 0; 

for (int i = 0; i < pts.length; i++){ 
    pts[i] = new Point2D(Math.random(), Math.random()); 
    StdDraw.setPenColor(StdDraw.RED); 
    StdDraw.setPenRadius(0.008); 
    pts[i].draw(); 
    for (int j = 0; j<i; j++){ 
     double distance[] = {pts[i].distanceTo(pts[j])}; 
     for (int k = 0; k <distance.length; k++){ 
      if (distance[k] > max){ 
       max = distance[k]; 
       maxI = i; 
       maxJ = j; 
      } 
     } 
    } 
} 

if (max > 0){ 
    System.out.println(max); 
    StdDraw.setPenColor(StdDraw.BLACK); 
    StdDraw.setPenRadius(0.002); 
    pts[maxI].drawTo(pts[maxJ]); 
} 
+0

기술적으로 나는 I와 J를 다시 색인 할 필요가 있었습니까? 그리고 이것 때문에 하루 종일 고통 받고있었습니다. – user3395013

+1

@ user3395013 네,'drawTo' 함수는 for 루프 내부에서만 정의되는'i'와'j'에 의존하기 때문에 그 정보의 복사본을 어딘가에 저장해야합니다. – ryrich

+0

나는 "max = distance [k]"에 너무 많은 터널 비전을 가졌을 뿐이었다. 다시 감사합니다! – user3395013

관련 문제