代码实现(用Java实现:编写程序模拟用以表示直线的Line类,具体包含以下逻辑:①表示直线起点和终点的嵌套类Point,其包含描述模拟指标的x、y字段:②表示直线方向的嵌套枚举Direction,其包含描述若干方向的枚举常量。在Line类中编写必要的代码,然后在测试类LineTest中构造几个Line对象并输出每个对象的有关信息。)
时间: 2023-06-19 16:09:56 浏览: 132
以下是用Java实现的代码:
```java
public class Line {
private Point startPoint; // 直线起点
private Point endPoint; // 直线终点
public Line(Point startPoint, Point endPoint) {
this.startPoint = startPoint;
this.endPoint = endPoint;
}
// 获取直线长度
public double getLength() {
double dx = startPoint.x - endPoint.x;
double dy = startPoint.y - endPoint.y;
return Math.sqrt(dx * dx + dy * dy);
}
// 获取直线斜率
public double getSlope() {
double dx = endPoint.x - startPoint.x;
double dy = endPoint.y - startPoint.y;
return dy / dx;
}
// 获取直线方向
public Direction getDirection() {
double dx = endPoint.x - startPoint.x;
double dy = endPoint.y - startPoint.y;
if (dx > 0) {
return Direction.RIGHT;
} else if (dx < 0) {
return Direction.LEFT;
} else if (dy > 0) {
return Direction.UP;
} else {
return Direction.DOWN;
}
}
// 输出直线信息
public void printInfo() {
System.out.println("起点坐标:(" + startPoint.x + ", " + startPoint.y + ")");
System.out.println("终点坐标:(" + endPoint.x + ", " + endPoint.y + ")");
System.out.println("直线长度:" + getLength());
System.out.println("直线斜率:" + getSlope());
System.out.println("直线方向:" + getDirection());
}
// 嵌套类:表示点
public static class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
}
// 嵌套枚举类:表示方向
public enum Direction {
LEFT, RIGHT, UP, DOWN
}
}
```
测试类:
```java
public class LineTest {
public static void main(String[] args) {
Line line1 = new Line(new Line.Point(0, 0), new Line.Point(3, 4));
line1.printInfo();
System.out.println("----------------");
Line line2 = new Line(new Line.Point(0, 0), new Line.Point(-3, 4));
line2.printInfo();
System.out.println("----------------");
Line line3 = new Line(new Line.Point(0, 0), new Line.Point(0, 4));
line3.printInfo();
System.out.println("----------------");
Line line4 = new Line(new Line.Point(0, 0), new Line.Point(0, -4));
line4.printInfo();
}
}
```
输出结果:
```
起点坐标:(0.0, 0.0)
终点坐标:(3.0, 4.0)
直线长度:5.0
直线斜率:1.3333333333333333
直线方向:UP
----------------
起点坐标:(0.0, 0.0)
终点坐标:(-3.0, 4.0)
直线长度:5.0
直线斜率:-1.3333333333333333
直线方向:UP
----------------
起点坐标:(0.0, 0.0)
终点坐标:(0.0, 4.0)
直线长度:4.0
直线斜率:Infinity
直线方向:UP
----------------
起点坐标:(0.0, 0.0)
终点坐标:(0.0, -4.0)
直线长度:4.0
直线斜率:-Infinity
直线方向:DOWN
```