首页 > 解决方案 > 编写一个带有构造函数的类 Car,该构造函数接受 yearModel、make 和 speed(以 MPH 为单位)作为其参数

问题描述

因此,我们希望编写一个接受模型、品牌和速度作为参数的 Car 类。我们得到了运行的主要方法,并且只希望编写包含加速(速度增加 5 英里/小时)和制动(降低 5 英里/小时但从不低于 0)的类。

main 方法为我们提供了这些代码行来设置参数:

Car a = new Car(2008, "Toyota", 0);
Car b = new Car(2017, "Ford", 20);
Car c = new Car(2012, "Volvo", 6);
Car [] test_field = {a, b, c}; 

main 中的调用显示为

for(int i = 0; i < test_field.length; i++){
    test_field[i].accelerate();
   }
}
else{
     for(int i = 0; i<test_field.length; i++){
        test_field[i].brake();
}

在编写该方法时,当我尝试运行时,我不断在类 Car 中获得一个方法,不能应用于我的加速和制动方法的给定类型,我似乎无法弄清楚我的问题。

我的代码:

public class Car {

private int yearModel;
private String make;
private int speed;

   public Car() {

   }
   public Car(int ym, String m, int sp) {

   yearModel = ym;
   make = m;
   speed = sp;
 } 
   public void setModel(int ym) {
   yearModel = ym;
   }
   public void setMake(String m) {
   make = m;
   }
   public void setSpeed(int sp) {
   speed = sp;

   }


  public int accelerate(Car c) {

  speed = speed + 5;

  return speed;

  }
  public int brake(Car c) {
 speed = speed - 5;

  if (speed < 0) {
  speed = 0;
  return speed;
  }

  else return speed;

  }
}

对新手编码员的任何意见或见解表示赞赏。

标签: java

解决方案


为什么你的加速和刹车方法在方法签名中需要一个 Car 对象?

public int accelerate(Car c)

当您调用该方法时,您也不会传递 Car 对象。

test_field[i].accelerate();

由于您在方法中不做任何事情c,因此您可以删除该参数。

应该是这样的:

public int accelerate() {
    speed = speed + 5;
    return speed;
}

public int brake() {
    speed = speed - 5;
    if (speed < 0) {
        speed = 0;
        return speed;
    }
    else {
        return speed;
    }
}

推荐阅读