下面的 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/