2017-09-28 18 views
-3

在setSpeed中,我試圖對通過的數字進行驗證檢查。如果一個負數通過,它應該通過初始值。 (速度:0),但如果我先傳遞一個3,然後返回一個負數,則返回的值爲3.如果首先傳遞負數,我由於某種原因不能返回0。阻止負數並在Java中返回以前的值?

public class Conveyor { 

    private String type; 
    private double speed; 

    public Conveyor(String t, double s) { 
     type = t; 
     speed = s; 
     setSpeed(s); 
    } 

    public String getType() { 
     return type; 
    } 

    public double getSpeed() { 
     return speed; 
    } 

    public void setSpeed(double s) { 

     if (s > 0) { 
      speed = s; 
     } else { 
      speed = speed; 
     } 

    } 

    public double timeToTransport(double distance) { 
     distance = distance/speed; 
     return distance; 

    } 

} 
+4

您認爲'速度=速度'是什麼?另外,你的問題很難理解。請包括[mcve]。 – shmosel

回答

2

看看你的構造:

speed = s; 
    setSpeed(s); 

和您的二傳手:

public void setSpeed(double s) { 

    if (s > 0) { 
     speed = s; 
    } else { 
     speed = speed; 
    } 
} 

什麼,當你把一個負值的情況是,它是在構造函數中設置與因爲speed = speed而保留在二傳手中。

所以,只需從構造函數中刪除speed = s,並刪除setter中的else部分。