gpt4 book ai didi

Java ArrayList长度错误

转载 作者:行者123 更新时间:2023-11-30 03:08:46 26 4
gpt4 key购买 nike

下面的 Have 方法返回所有兰博基尼对象的数组,这些对象的马力范围在作为参数传递的范围内。当我尝试编译错误时,Lamborghini.length 找不到符号 - 可变长度。 length 不是 ArrayList 的一部分吗?

public Lamborghini[] getCarsWithHorsepowerRange(double lowHP, double highHP)
{

int horsePower = 0;

for(int i = 0; i < Lamborghini.length; i++)
{
if(Lamborghini[i] != null)
{
if((Lamborghini[i].getHorsePower() >= lowHP) &&
((Lamborghini[i].getHorsePower() <= highHP)))
{
horsePower++;
}
}

最佳答案

您的代码存在一些问题。首先,您尝试使用 Lamborghini引用ArrayList你声明,当 Lamborghini只是其中存储的对象类型。相反,您应该使用变量名称,在本例中 inventory ,引用 ArrayList 的实例您创建的。

其次,你很困惑 Array s ArrayList s ,它们是不同的类型,并且有不同的方式来访问它们的长度和内容。由于您使用的是 ArrayList ,您需要使用size()获取其长度的方法,以及 .get(int)访问元素的方法。

因此将您的代码更改为以下内容以纠正这些错误:

public Lamborghini[] getCarsWithHorsepowerRange(double lowHP, double highHP){
int horsePower = 0;

for(int i = 0; i < inventory.size(); i++){
if(inventory.get(i) != null){
if((inventory.get(i).getHorsePower() >= lowHP) &&
(inventory.get(i).getHorsePower() <= highHP)){
horsePower++;
}
}
}
}

这仍然会有问题,因为它的返回类型为 Lamborghini[] ( Lamborghini 的数组),永远不会返回。我不知道意图是什么,但是如果你不需要返回值,你可以将类型更改为 void 。或者您可以将类型更改为 ArrayList<Lamborghini>并返回inventory目的。否则,您需要创建一个新数组并填充它:

Lamborghini[] result = new Lamborghini[inventory.size()];
for(int i = 0; i < inventory.size(); i++){
result[i] = inventory.get(i);
}
return result;

关于Java ArrayList长度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114291/

26 4 0