|
import java.util.Scanner;
public class Point {
private double x;
private double y;
public static void main(String[] args) throws Throwable{
try(Scanner s = new Scanner(System.in)){
System.out.println("请输入点a的坐标。");
Point p1 = new Point(s.nextDouble(), s.nextDouble());
System.out.println("请输入点b的坐标。");
Point p2 = new Point(s.nextDouble(), s.nextDouble());
System.out.printf("点a的位置: %s%n", p1);
System.out.printf("点a到原点的距离: %.2f%n", p1.getDistance());
p1.move(1, 1);
System.out.printf("点a移动后的位置: %s%n", p1);
System.out.printf("点b的位置: %s%n", p2);
System.out.printf("点a与b的距离: %.2f%n", p1.getDistance(p2));
System.out.printf("点a和b一样吗?: %s%n", p1.isSamePosition(p2));
}
}
public Point(double x, double y) {
this.x=x;
this.y=y;
}
public boolean isSamePosition(Point p2) {
return this==p2;
}
public double getDistance() {
return Math.sqrt(x*x+y*y);
}
public double getDistance(Point p2) {
double sum=Math.sqrt((p2.x-this.x)*(p2.x-this.x)+(p2.y-this.y)*(p2.y-this.y));
return sum;
}
public void move(double dx, double dy) {
this.x=this.x+dx;
this.y=this.y+dy;
}
public String toString() {
return "["+this.x+","+this.y+"]";
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
}
请输入点a的坐标。
3 4
请输入点b的坐标。
5 6
点a的位置: [3.0,4.0]
点a到原点的距离: 5.0
点a移动后的位置: [4.0,5.0]
点b的位置: [5.0,6.0]
点a与b的距离: 1.41
点a和b一样吗?: false
import java.util.Scanner;
public class Line {
private Point p1,p2;
public static void main(String[] args) throws Throwable{
try(Scanner s = new Scanner(System.in)){
System.out.println("请按x1 y1 x2 y2的顺序输入线段的坐标。");
Point p1 = new Point(s.nextDouble(), s.nextDouble());
Point p2 = new Point(s.nextDouble(), s.nextDouble());
System.out.println("请按x y的顺序输入点的坐标。");
Point p3 = new Point(s.nextDouble(), s.nextDouble());
Line l = new Line(p1, p2);
System.out.printf("线段: %s%n", l);
System.out.printf("线段的长度: %.2f%n", l.getLength());
l.move(1, 1);
System.out.printf("移动后的线段: %s%n", l);
System.out.printf("点%s在线段%s上吗?: %s%n", p3, l, l.isOn(p3));
}
}
public Line(Point p1, Point p2) {
this.p1=p1;
this.p2=p2;
}
public double getLength() {
double sum=Math.sqrt((p2.getX()-p1.getX())*(p2.getX()-p1.getX())+(p2.getY()-p1.getY())*(p2.getY()-p1.getY()));
return sum;
}
public void move(int dx, int dy) {
p1.setX(p1.getX()+dx);
p1.setY(p1.getY()+dy);
p2.setX(p2.getX()+dx);
p2.setY(p2.getY()+dy);
}
public boolean isOn(Point p) {
boolean pdline = (p.getX() - p1.getX()) * (p1.getY() - p2.getY()) == (p1.getX() - p2.getX())
* (p.getY() - p1.getY());
return pdline;
}
public String toString() {
return "["+p1.getX()+","+p1.getY()+"]->["+p2.getX()+","+p2.getY()+"]";
}
}
请按x1 y1 x2 y2的顺序输入线段的坐标。
0 0 2 4
请按x y的顺序输入点的坐标。
2 3
线段: [0.0,0.0]->[2.0,4.0]
线段的长度: 4.47
移动后的线段: [1.0,1.0]->[3.0,5.0]
点[2.0,3.0]は线段[1.0,1.0]->[3.0,5.0]上吗?: true
|
|