0
public class MotorCar extends Vehicle
{
    private String engCap;

    public double getLicenseFee()
    {
        double fee;

        if(this.engCap < "1500cc")
        {
            return fee = 750;
        }
        else if(this.engCap > "1500cc" && this.engCap < "2500cc")
        {
            return fee = 900;
        }
        else(this.engCap > "2500cc")
        {
            return fee = 1250;
        }

    }

}

这有什么问题?

4

2 回答 2

3

您不能使用小于<和大于>运算符比较字符串(或任何其他对象)。

如果您将 engCap 变量更改为 int 并删除“cc”部分,您将能够按照您尝试的方式进行比较。

例如:

public class MotorCar extends Vehicle {
    private int engCap;

    public double getLicenseFee() {
        double fee;

        if(this.engCap < 1500) {
            return fee = 750;
        } else if(this.engCap > 1500 && this.engCap < 2500) {
            return fee = 900;
        } else(this.engCap > 2500) {
            return fee = 1250;
        }
    }
}
于 2013-04-09T20:16:50.517 回答
2

在 Java 中,您不能对字符串使用“<”和“>”(以及“<=”和“>=”)运算符。要比较这些值,请使用该String#compareTo方法,该方法将返回一个小于零、等于零或大于零的整数,具体取决于字符串比较小于等于还是大于参数。

注意,因为这是字符串比较,“500cc”会大于“1500cc”。

编辑

如果您尝试根据 的整数部分确定范围engCap,那么使用@thegrinner 的答案会更简单,并且只存储没有“cc”的数值。然后您可以使用您尝试使用的运算符。

于 2013-04-09T20:17:28.260 回答