gpt4 book ai didi

java - 抽象类中缺少返回语句并且预期没有参数

转载 作者:行者123 更新时间:2023-11-30 06:50:12 25 4
gpt4 key购买 nike

我们得到了一个任务,有 2 个(完整的)类 MotorcycleCar 并且要求创建一个抽象类 Vehicle,它还应该包含一个抽象方法(我猜是为了计算车辆税)和一个名为 CarIF 的接口(interface),用于所有公共(public)方法(我不确定那是什么意思)。

我创建了以下代码,并编辑了 MotorcycleCar 以便它们不包含颜色和 cylinderCapacity,并创建了一个测试文件以查看它是否有效,但是当我尝试编译它时,出现错误

missing return statement

在我的 Vehicle 类中。

此外,每当我尝试在我的 Test.java 中向 Motorcycle 添加任何内容时,我都会收到错误消息,即没有预期的参数。那是因为我缺少构造函数,这是否意味着我还需要将颜色和 cylinderCapacity 添加到 Car 中的构造函数?

(我将它们放在单独的文件中,但我将它们放在一起以作为代码发布在这里。)

public abstract class Vehicle
{
private String color;
private double cylinderCapacity;

public double getCylinderCapacity() {
return cylinderCapacity;
}

public double setCylinderCapacity(double cylinderCapacity) { //Don't change the original issue otherwise anybody looking at this question may get confused.
this.cylinderCapacity = cylinderCapacity;
}


public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}


public abstract double calculateMotorVehicleTax ();

}

public interface CarIF {

void printInfo();

}

public class Motorcycle extends Vehicle implements CarIF {



@Override
public double calculateMotorVehicleTax() {
return Math.ceil(cylinderCapacity / 25) * 1.84;
}

public void printInfo() {
System.out.println("I'm a " + this.getClass().getSimpleName() + ".");
}
}


public class Car extends Vehicle implements CarIF {

private int engineType;
private double co2Emission;

public Car(int engineType, double co2Emission) {

this.engineType = engineType;
this.co2Emission = co2Emission;
}

public int getEngineType() {
return engineType;
}

public double getCo2Emission() {
return co2Emission;
}



@Override
public double calculateMotorVehicleTax() {
double tax = (engineType == 0) ? 2.0 : 9.5;
double _co2Emission = co2Emission - 95;
if(_co2Emission < 0) {
_co2Emission = 0;
}
return Math.ceil(cylinderCapacity / 100) * tax + _co2Emission * 2.0;
}

public void printInfo() {
System.out.println("I'm a " + this.getClass().getSimpleName() + ".");
}
}

public class Test {
public static void printTax(Vehicle o) {
System.out.print("Tax: ");
System.out.println(o.calculateMotorVehicleTax());
}

public static void main(String[] args) {
Car c = new Car("blue", red, 3, 5);
Motorcycle m = new Motorcycle("red", 9,);
printTax(c);
printTax(m);
}
}

最佳答案

如果您的方法的返回类型不是 void,那么您的方法中应该有 return 语句,该语句会被无条件调用。

这里有 public double setCylinderCapacity(...){} 方法,它的返回类型为 double 而您没有返回任何 double 值(value)。因此 Missing return statement 发生了。

返回double,这不是您的方法名称建议的,或者将返回类型更改为void

关于java - 抽象类中缺少返回语句并且预期没有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41598690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com