2011-08-25 8 views
-2

모두 안녕하세요 !! 나는 Java를 처음 사용합니다. 이 문제를 해결하는 데 도움이되기를 바란다. 그리고 이것은 바보 같은 질문이라고 생각한다.하지만이 문제를 해결할 방법을 생각할 수 없다.루프에서 값을 호출하는 방법?

void main에서 루프에서 double d0을 호출하는 방법은 무엇입니까?

public class Dist 
{ 
    public static void main(String[] args) 
    { 
     Point []pt=new Point [4]; 

     for(int i = 0 ;i < pt.length ; i ++){ 
       pt[i] = new Point(); 
     } 

      pt[0].x=40; pt[0].y=40; 
      pt[1].x=40; pt[1].y=39; 
      pt[2].x=39; pt[2].y=40; 
    // pt[3].x=26; pt[3].y=36; 

      int N=4; 

      for (int n=0;n<N-2;n++){ 
       int ux=pt[n].x-pt[n+1].x; 
       int uy=pt[n].y-pt[n+1].y; 
       int vx=pt[n+1].x-pt[n+2].x; 
       int vy=pt[n+1].y-pt[n+2].y; 
       int wx=pt[n].x-pt[n+2].x; 
       int wy=pt[n].y-pt[n+2].y; 
       int zx=ux-vx; 
       int zy=uy-vy; 

       int a=(ux*ux)+(uy*uy); 
       int b=(ux*vx)+(uy*vy); 
       int c=(vx*vx)+(vy*vy); 
       int d=(ux*wx)+(uy*wy); 
       int e=(vx*wx)+(vy*wy); 
       double dmin; 

       if(a==0||c==0||e==0) { 
        System.out.println("a"+a); 

        break; 
       } 

       int f = (a * c) - (b * b); 

       if(f <= 0){ 
        int tc = d/b; 
        int d0x=wx+(tc*vx); 
        int d0y=wy+(tc*vy); 

        double d0=Math.sqrt((d0x*d0x)+(d0y*d0y)); 
        System.out.println("dmin1:"+d0); 
       } 

       int s=(b*e)-(c*d); 
       int t=(a*e)-(b*d); 

       int d1x=wx+(s*ux)-(t*vx); 
       int d1y=wy+(s*uy)-(t*vy); 

       double d1=Math.sqrt((d1x*d1x)+(d1y*d1y)); 
       System.out.println("d1:"+d1); 

       double h=Math.pow((ux-vx),2); 
       double j=Math.pow((uy-vy),2); 
       double k=h+j; 

       int tx=-wx*(ux-vx); 
       int ty=-wy*(uy-vy); 
       double ts=(tx+ty)/k; 

       double d2x=wx+(ts*(ux-vx)); 
       double d2y=wy+(ts*(uy-vy)); 

       double d2=Math.sqrt((d2x*d2x)+(d2y*d2y)); 
       System.out.println("d2:"+d2); 

       if(d1<d2) 
        dmin=d1; 
       else 
        dmin=d2; 

       System.out.println("dmin:"+dmin); 
      } 
     } 
    } 
+3

나는 당신이 무슨 말을하고 있는지 전혀 모르겠다. – Gabe

답변

0

귀하의 질문은 약간 불분명하지만, 어쩌면 문제는 당신이 if 블록의 내부 d0를 선언하는 것입니다. 그 블록 밖에서는 보이지 않습니다. 다른 곳에서 선언 해보십시오.

+0

tq! 이제 해결할 수있어. – yana819

관련 문제