杭电ACM2001java做法

计算两点间的距离


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,又把二进制表示弄成像正确答案一样,自己的代码还是无法通过,有点无奈。。。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值