题目
定义表示二维平面坐标点的结构体 Point,从标准输入读入两点的坐标 (x1, y1) 和 (x2, y2),计算并输出两点之间的欧几里得几何距离(保留两位小数)。
输入格式:一行输入 4 个浮点数 x1 y1 x2 y2,以空格分隔。
输出格式:输出保留两位小数的浮点数,表示两点间的距离,末尾换行。
数据范围与约定:坐标均为 double 精度浮点数。
思路与算法
1. 结构体封装数据
使用 struct Point { double x; double y; }; 将相关的坐标数据打包为一个复合实体,提高代码的可读性与规范性。
2. 平面欧几里得距离
计算两点距离公式:d = √((x1 - x2)² + (y1 - y2)²)。利用 hypot(dx, dy) 或 sqrt(dx*dx + dy*dy),引入数学头文件 <math.h>。
完整程序
import java.util.Scanner;
// 自定义点结构类
class Point {
double x;
double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double distanceTo(Point other) {
double dx = this.x - other.x;
double dy = this.y - other.y;
return Math.sqrt(dx * dx + dy * dy);
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double x1 = sc.nextDouble();
double y1 = sc.nextDouble();
double x2 = sc.nextDouble();
double y2 = sc.nextDouble();
Point p1 = new Point(x1, y1);
Point p2 = new Point(x2, y2);
System.out.printf("%.2f%n", p1.distanceTo(p2));
}
}运行示例
输入:
0 0 3 4输出:
5.00