杭电ACM2001java做法

来源:互联网 发布:红外成像目标跟踪算法 编辑:程序博客网 时间:2024/04/28 03:10

计算两点间的距离


Problem Description
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
 

Input
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
 

Output
对于每组输入数据,输出一行,结果保留两位小数。
 


Sample Input
0 0 0 1
0 1 1 0
 


Sample Output
1.00
1.41
 
本来是道很简单的题,但不知道为什么错了好多,拿其中一次个人感觉比较正确的,但是WA的做法先贴上来
import java.text.DecimalFormat;import java.util.Scanner;public class Main{    public static void main(String[] args){        Scanner sc=new Scanner(System.in);        while(sc.hasNextInt()){            int x1=sc.nextInt();            int y1=sc.nextInt();            int x2=sc.nextInt();            int y2=sc.nextInt();            double n=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));            n = (float) Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));            DecimalFormat dcmFmt = new DecimalFormat("0.00");            System.out.println(dcmFmt.format(n));                  }    }}
然后是正确的答案,是从别人那里看的
import java.io.BufferedInputStream;import java.util.Scanner;public class Main{    public static void main(String[] args) {        Scanner s = new Scanner(new BufferedInputStream(System.in));        double[] d = new double[4];         while(s.hasNext()) {            for(int i=0; i<4; ++i)             d[i] = s.nextDouble();            double tp = (d[0]-d[2])*(d[0]-d[2])+(d[1]-d[3])*(d[1]-d[3]);            double ttp = Math.sqrt(tp);            System.out.printf("%.2f", ttp);            System.out.println();        }    }}
感觉不一样的地方应该就是他是全部数字都是用double接收的吧,然后把自己的int改成double,想再去试试的时候,网站打不开了。。。。下次再试试吧。。。
好吧,不管我将Int改成double,又把二进制表示弄成像正确答案一样,自己的代码还是无法通过,有点无奈。。。


0 0
原创粉丝点击