编写程序模拟用以表示直线的Line类,具体包含以下逻辑: ① 表示直线起点和终点的嵌套类Point,其包含描述横纵坐标的x、y字段。 ② 表示直线方向的嵌套枚举Direction,其包含描述若干方向的枚举常量。 在Line类中编写必要的代码,然后在测试类LineTest中构造几个Line对象并输出每个对象的有关信息。
时间: 2024-03-15 20:47:10 浏览: 152
好的,我先为您提供一个简单的 Line 类的实现:
```java
public class Line {
private Point startPoint;
private Point endPoint;
public Line(Point startPoint, Point endPoint) {
this.startPoint = startPoint;
this.endPoint = endPoint;
}
public Point getStartPoint() {
return startPoint;
}
public Point getEndPoint() {
return endPoint;
}
public Direction getDirection() {
int deltaX = endPoint.x - startPoint.x;
int deltaY = endPoint.y - startPoint.y;
if (deltaX == 0) {
return deltaY > 0 ? Direction.UP : Direction.DOWN;
} else if (deltaY == 0) {
return deltaX > 0 ? Direction.RIGHT : Direction.LEFT;
} else if (deltaX > 0 && deltaY > 0) {
return Direction.UP_RIGHT;
} else if (deltaX > 0 && deltaY < 0) {
return Direction.DOWN_RIGHT;
} else if (deltaX < 0 && deltaY > 0) {
return Direction.UP_LEFT;
} else {
return Direction.DOWN_LEFT;
}
}
@Override
public String toString() {
return "Line{" +
"startPoint=" + startPoint +
", endPoint=" + endPoint +
", direction=" + getDirection() +
'}';
}
public static class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
@Override
public String toString() {
return "(" + x + ", " + y + ")";
}
}
public enum Direction {
UP, DOWN, LEFT, RIGHT, UP_LEFT, UP_RIGHT, DOWN_LEFT, DOWN_RIGHT
}
}
```
这个类包含了一个嵌套类 Point,用于表示直线的起点和终点,还包含了一个嵌套枚举 Direction,用于表示直线的方向。
在 Line 类中,我们定义了一个构造方法,用于初始化起点和终点,还定义了一些访问方法,用于获取起点、终点和方向。其中,获取方向的方法根据起点和终点的坐标差值来计算。
最后,我们重写了 toString 方法,以便在输出对象信息时方便查看。
接下来,我们可以编写测试类 LineTest,来构造几个 Line 对象并输出它们的信息:
```java
public class LineTest {
public static void main(String[] args) {
Line line1 = new Line(new Line.Point(0, 0), new Line.Point(0, 5));
Line line2 = new Line(new Line.Point(0, 0), new Line.Point(5, 0));
Line line3 = new Line(new Line.Point(0, 0), new Line.Point(5, 5));
Line line4 = new Line(new Line.Point(0, 0), new Line.Point(-5, -5));
System.out.println(line1);
System.out.println(line2);
System.out.println(line3);
System.out.println(line4);
}
}
```
运行测试类后,输出结果如下:
```
Line{startPoint=(0, 0), endPoint=(0, 5), direction=UP}
Line{startPoint=(0, 0), endPoint=(5, 0), direction=RIGHT}
Line{startPoint=(0, 0), endPoint=(5, 5), direction=UP_RIGHT}
Line{startPoint=(0, 0), endPoint=(-5, -5), direction=DOWN_LEFT}
```
可以看到,每个 Line 对象的信息都被正确地输出了。
阅读全文