java - 编写一个带有构造函数的类 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;
}
}
对新手编码员的任何意见或见解表示赞赏。
解决方案
为什么你的加速和刹车方法在方法签名中需要一个 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;
}
}
推荐阅读
- angular - 如果 API 调用失败,如何将切换状态更改为原始状态
- matlab - 使用 h5py 读取 matlab .mat 文件
- airflow - 气流:是否可以在 DAG 中配置任务级超时?
- javascript - 在javascript中排列对象键(字符串,字符串中的数字)
- laravel - Laravel - 如何在“whereHas”中检查关系中的所有记录?
- android - 使用 ADB shell 命令在 android 上禁用绝对蓝牙音量
- python - 在 Python 中估计或绑定浮点转换错误
- hibernate - LiquiBase - 找不到数据库驱动程序 liquibase.ext.hibernate.database.connection.HibernateDriver
- android - 使用颤振不停地振动
- php - 使用 laravel 理解模型关系