为什么我无法从该枚举中获取所需的数据?

时间:2019-08-06 16:59:40

标签: java for-loop enums equals

我需要知道: 为什么我不能将maxSpeed作为整数而不是整数传递给方法?

为什么使用“ getMaxSpeed.equals(speed)”方法工作却不能比较小于/大于? (我认为是因为maxSpeed是Integer而不是Int,对吗?)。该代码无法使用compareTo进行编译。

我需要获取maxSpeed大于“ speed”的所有汽车的清单,该怎么做?

我不仅要返回名称(宝马,梅赛德斯),而且还要返回engineCc?

尝试将普通运算符用于基元,并将对象方法用于

enum CarData {

    BMW (230, 3000),
    Mercedes (220, 2500);

        private int maxSpeed;       
        private int engineCc;

        CarData (int maxSpeed, int engineCc) {
        this.maxSpeed = maxSpeed;
        this.engineCc = engineCc;
        }

        Integer getMaxSpeed(){
        return maxSpeed;
        }

        int getEngineCc() {
        return engineCc;
        }

    public static CarData getByMaxSpeed (int speed) {
    for (CarData carData : CarData.values()){
    if (carData.getMaxSpeed() => speed) 
        return carData;
        }
    return null;
    }
}

public class VehicleInfo {

    public static void main (String [] args){

        System.out.println (CarData.getByMaxSpeed(200));

    }
}

期望的结果是“宝马,梅赛德斯”或“ 3000、2500”,无论我需要哪个。

1 个答案:

答案 0 :(得分:0)

int是Java中的原始数据类型。 整数是包装器类。您不能像使用基元一样来比较包装类(例如Integer)的实例,而使用Integer则必须使用方法,而使用基元则更简单。 对于输出,请尝试覆盖枚举中的toString方法,此toString方法是从Object类继承的。 完整的课程将是

WebDriver driver = getDriver();

driver.get("******");
driver.findElement(By.id("txtUsername")).sendKeys("****");
driver.findElement(By.id("txtPassword")).sendKeys("****");
driver.findElement(By.id("btnLogin")).click();

}

公共类VehicleInfo {

enum CarData {

BMW(230, 3000),
Mercedes(220, 2500);

private int maxSpeed;
private int engineCc;

/* This method was added/overwritten */
@Override
public String toString() {
    return name() + ", Cc: " + engineCc;
}

CarData(int maxSpeed, int engineCc) {
    this.maxSpeed = maxSpeed;
    this.engineCc = engineCc;
}

Integer getMaxSpeed() {
    return maxSpeed;
}

int getEngineCc() {
    return engineCc;
}

public static CarData getByMaxSpeed(int speed) {
    for (CarData carData : CarData.values()) {
       //Here I replaced the => by >=
        if (carData.getMaxSpeed() >= speed) {
            return carData;
        }
    }
    return null;
}

} }

输出:

宝马,抄送:3000

如果要使用其他字符串,只需在toString方法中自定义返回值,则还必须将=>替换为> =进行比较。

希望这会有所帮助。