2017-06-05 111 views
-1

我做了一個類,它創建了一個constructer和一個方法。類中的方法不能應用於給定的類型

public class Car 
{ 
private double speed; 
private String make; 
private int year; 

public Car(int year, String make, double speed) { 
this.year = year; 
this.make = make; 
this.speed = speed; 
} 

public String getMake(){ 
    return make; 
} 
public double getSpeed(){ 
    return speed; 
} 
public int getYear(){ 
    return year; 
} 


    public void accelerate (double speed) 
{ 
     speed = speed + 1.00; 
} 


} 

我有這裏唯一的問題是,當我去我的驅動程序類,以嘗試並運行它,這是我收到

public class CarTester 
{ 
public static void main (String[] args){ 

Car p1 = new Car(2010, "toyota", 4.50); 
Car.accelerate(); 
Car.accelerate(); 

} 
} 

「錯誤的錯誤:方法加速class Car can not apply to given given types「

這是爲什麼?因爲它說「必需:雙倍」,但「速度」變量是雙重的?

回答

2

方法

public void accelerate(double speed){ 
speed=speed+1.0; 
} 

不應期待被傳遞「速度」參數。它應該看起來就像這樣:

public void accelerate(){ 
speed=speed+1.0; 
} 

此外,你應該在對象(本例中爲p1)上調用此方法。

p1.accelerate(); 

Car.accelerate(); 

希望它會幫助你解決這個問題:)

2

的方法應該不需要參數

public void accelerate() { 
    speed = speed + 1.00; 
} 

,必須從實例調用p1

public static void main (String[] args){ 
    Car p1 = new Car(2010, "toyota", 4.50); 
    p1.accelerate();  
    p1.accelerate(); 
    System.out.println(p1.getSpeed()); 
} 
0

您創建一個Car對象:

Car p1 = new Car(2010, "toyota", 4.50); 

1),但你以靜態方式調用加速,而accelerate (double speed)是實例方法:

Car.accelerate(); 
Car.accelerate(); 

2)accelerate()指定了一個參數,但是你沒有在方法中提供它。

你還是寫:

car.accelerate(5); 
car.accelerate(5); 

3)本:

public void accelerate (double speed){ 
     speed = speed + 1.00; 
    } 

將無法​​正常工作,本地變量具有相同的名稱作爲字段名。
名稱與字段名稱相同的局部變量會隱藏字段變量。
爲了避免它,你應該重新命名參數名或更好this前綴字段名,當你的方法使用它:

public void accelerate (double speed){ 
     this.speed = this.speed + speed; 
    } 
1

accelerate不是一個靜態方法,所以Car.accelerate()不能稱之爲

您必須在您創建的對象上調用它,例如p1

此外 - 此方法預計通過speed參數,但這看起來是錯誤的。

我將它改寫爲

public void accelerate() 
{ 
    speed = speed + 1.00; 
} 

的速度已經是場

或者你可以把它作爲

public void accelerate (double speedUpBy) 
{ 
    speed = speed + speedUpBy; 
} 

,這樣就可以通過specifiy要多少加速

0
public static void main (String[] args) 

{轎車C =新車(2010年, 「豐田」,4.50); c.accelerate();的System.out.println(c.getSpeed()); }

代碼應該是這樣的,通過任何對象c而不是class Car調用。

相關問題