如何从循环中调用值?

时间:2011-08-25 02:24:36

标签: java loops if-statement

大家好!我是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);
             }
         }
    }

1 个答案:

答案 0 :(得分:0)

您的问题有点不清楚,但问题可能是您在d0块内声明if。它不会在该块之外可见。尝试在其他地方宣布它。