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