java逻辑卡在我的项目中
因为我得到了关于Bounds arrayoutofbounds的前一个问题,错误解决了,但被否决了(没有什么不愉快的感觉:D,但这是我的第一个问题,所以你应该期待一些“错误”)。不管怎样,我要用一个新问题再试一次。这是我在编程II实验课考试中做的一个项目练习。首先,它需要一个名为Point的类,该类用x和y坐标描述2d空间中的一个点(小菜一碟)
此外,它还需要一个名为Line的类(一条线通常由二维空间中的两个点组成)(这是否意味着class Line必然继承class Point?)并描述了一条二维空间中有2个点的直线(也很简单)。此外,它还需要一个名为void MoveLine(Point,Point)的方法,该方法将移动该行(这里从卡住的:D开始)
最后,它需要创建一个以3个对象a、B、C为点的主类(使用类Point中的2个构造函数),然后在屏幕上打印点B的信息。之后,它需要创建两个对象D,E作为线,并用0值初始化D线,用A点和B点初始化E线。要继续,它需要在屏幕上打印E线的信息(到目前为止还不错),但它希望我们移动E线,使其穿过点(1,1),这将是点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? */
}
}
谢谢你花时间阅读这篇文章。我期待着您的回复
# 1 楼答案
继续我的评论,移动E线以包含(即交叉)点(1,1)的一个非常简单的方法是将pStart或pEnd更改为等于(1,1)