gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:59:43 26 4
gpt4 key购买 nike

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

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

我需要获取 maxSpeed 大于“速度”的所有汽车的列表,我该怎么做?

如何不仅返回名称(BMW、Mercedes),还返回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));

}
}

预期结果是“BMW、Mercedes”或“3000、2500”,无论我需要哪个。

最佳答案

int 是 Java 中的一种基本数据类型。Integer 是一个包装类。您不能以与基元相同的方式比较包装类(如 Integer)的实例,对于 Integer,您必须使用方法,而对于基元则更简单。对于输出,请尝试重写枚举中的 toString 方法,此 toString 方法是从 Object 类继承的。完整的类是

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;
}

}

公共(public)类车辆信息{

public static void main(String[] args) {

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

}

}}

输出:

宝马,抄送:3000

如果您想要不同的字符串,只需在 toString 方法中自定义返回,还必须将 => 替换为 >= 进行比较。

希望这有帮助。

关于java - 为什么我无法从此枚举中获取所需的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380845/

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