0

因为我收到了关于 arrayoutofbounds 错误解决但被否决的先前问题(没有难过的感觉:D 但这是我的第一个问题,所以你应该期待一些“错误”)。无论如何,我会再试一次,提出一个新问题。这是我在编程 II 实验课考试时进行的一个项目练习。首先,它需要一个名为 Point 的类,它用 x 和 y 坐标描述 2d 空间中的一个点(小菜一碟)。

此外,它需要一个名为 Line 的类(一条线通常由二维空间中的 2 个点组成)(这是否意味着 Line 类必然继承类 Point?)并用 2 个点描述二维空间中的线(片蛋糕也)。此外,它需要一个名为 void MoveLine(Point, Point) 的方法,该方法将移动线(这里开始卡住:D)。

最后,它需要创建一个主类,其中包含 3 个对象 A、B、C 作为点(使用 Point 类中的 2 个构造函数),然后在屏幕上打印点 B 的信息。之后,它需要创建 2 个对象 D、E 作为 Lines,并用 0 值初始化 Line D,用点 A 和 B 初始化 Line E。要继续,它需要在屏幕上打印 Line E 的信息(到目前为止一切都很好),然后它希望我们以穿过点 (1,1) 的方式移动 E 线,该点将是点 c。这是我的问题所在。最后它要我们在屏幕上打印 E 线的新信息。你能指出我正确的方向吗?谢谢!

下面是我到目前为止创建的完整代码,以避免像我之前的问题中那样的混淆。

public class Point {
    protected double x;
    protected double y;

    public Point() {
        //First constructor-no arguments
    }

    public Point(double x1, double y1) {
        //Second constructor-2 arguments
        x = x1;
        y = y1;
    }

    public void setX(int x1) {
        x = x1;
    }

    public double getX() {
        return x;
    }

    public void setY(int y1) {
        y = y1;
    }

    public double getY() {
        return y;
    }

    public String toString() {
        return "("+x+","+y+")";
    }
}

班线

public class Line extends Point{
    private Point pStart;
    private Point pEnd;

    public Line() {
        //First constructor-no arguments
    }

    public Line(Point p1, Point p2) {
        //Second constructor-2 arguments
        pStart = p1;
        pEnd = p2;
    }

    public void setStartPoint(Point p1) {
        pStart = p1;
    }

    public Point getStartPoint() {
        return pStart;
    }

    public void setEndPoint(Point p2) {
        pEnd = p2;
    }

    public Point getEndPoint() {
        return pEnd;
    }

    public String toString() {
        return "Line's start point: "+pStart.toString()+"\t"+"Line's end point:    "+pEnd.toString();
    }

    public void MoveLine(Point p, Point mp) {
        //My problem :D 
        p.x += mp.x;
        p.y += mp.y;
    }
}

主要班

public class TestProgram {
    public static void main(String[] args) {
        Point A = new Point();
        Point B = new Point(4,5);
        Point C = new Point(1,1);
        Point zeroStartPoint = new Point(0,0);
        Point zeroEndPoint = new Point(0,0);

        A.setX(8);
        A.setY(13);

        System.out.println("Point B: "+B.toString());

        Line D = new Line();
        Line E = new Line(A,B);

        D.setStartPoint(zeroStartPoint);
        D.setEndPoint(zeroEndPoint);

        System.out.println("Line E: "+"\n"+E.toString());

         MoveLine(E.pStart,);   //WTF? my problem no.2

        System.out.println("Line E: "+"\n"+E.toString());

        /* As you can see my problem is more about logic 
           and less about programming. Any ideas? */
    }
}

感谢您花时间阅读本文。我期待着您的回复。

4

1 回答 1

0

继续我的评论,移动线 E 以包含(即交叉)点 (1, 1) 的一种非常简单的方法是将 pStart 或 pEnd 更改等于 (1,1)。

于 2013-06-20T21:05:08.257 回答