2013-09-24 26 views
0

在我的CS类的项目中,我应该使用double值来缩放LineSegment并返回一个新的LineSegment,它的起点与旧LineSegment的起始点相同,但带有新的终点从被缩放。我不确定如何做到这一点。我试图通过标量乘以线段,但那不起作用,并给我一个不兼容的打字错误。这是我的代码。缩放线段 - Java

public class LineSegment { 
private final Point start; 
private final Point end; 
public LineSegment(Point start, Point end) { 
    this.start = start; 
    this.end = end; 
} 
public double slope() { 
    return ((end.getY()-start.getY())/(end.getX()-start.getX())); 
} 
public double yIntercept() { 
    return (start.getY()-(this.slope()*start.getX())); 
} 
public Point getStart() { 
    return this.start; 
} 
public Point getEnd() { 
    return this.end; 
} 
public double length() { 
    return (Math.sqrt(Math.pow((end.getX()-start.getX()),2) + Math.pow((end.getY()-start.getY()),2))); 
} 

public LineSegment scaleByFactor(double scalar) { 
    return null; 
} 
@Override 
public String toString() { 
    return ("y = " + this.slope() + "x +" + this.yIntercept()); 
} 
} 
+0

好吧。错误消息是“错误:无法找到符号。符号:可变长度”。我不确定为什么this.length不起作用。 –

+0

请参阅编辑以回答。 –

回答

1

这是行不通的:

public LineSegment scaleByFactor(double scalar) { 
    return (this.length*scalar); 
} 

注意,this.length字段不存在。

但即使你叫长度方法,length(),你仍然有一个严重的问题,因为你的方法说,它会返回一个线段对象和你会返回一个数字。我建议你使用计算来创建一个新的LineSegment对象(提示 - 使用新的参数和使用你的计算的参数来调用构造函数),然后返回它。

在伪

public LineSegment scaleByFactor(double scalar) { 
    // use scalar, start and end to calculate a new end parameter value 
    // create new LineSegement object with the old start and new end parameters 
    // return this newly created object 
} 
+0

对不起,编辑错误。无论如何,最初的问题是“长度”是一种方法,而不是一个变量。这是解释原始错误的原因。 –

+1

@JanDoerrenhaus:好的,谢谢,我编辑了我的代码来反映这一点。 –

+0

这更清晰。该项目只要我计算一个新的最终参数值,但你的伪代码仍然是一个很好的帮助。唯一的问题是我不完全知道如何计算新的结束参数。我将用代码中的最新破解编辑我的代码。 –