2013-09-24 36 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

這更清晰。該項目只要我計算一個新的最終參數值,但你的僞代碼仍然是一個很好的幫助。唯一的問題是我不完全知道如何計算新的結束參數。我將用代碼中的最新破解編輯我的代碼。 –