2015-12-06 66 views
0

下面的方法返回所有在作为参数传递的范围内具有马力的所有Lamborghini对象的数组。当我尝试在Lamborghini.length编译错误时找不到符号 - 可变长度。不是ArrayList的长度部分?Java 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++; 
      } 
     } 
+0

您能显示'Lamborghini'的声明吗? – resueman

+1

.size(),并通过.get(i)获得索引 – Steven

+0

[如何查找数组列表的长度?]的可能重复(http://stackoverflow.com/questions/9652732/how-to-找到一个数组列表的长度) –

回答

1

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

其次,你很困惑ArraysArrayLists,这是不同的类型,并有不同的方式来访问它们的长度和内容。由于您使用的是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; 
+0

感谢resueman,这非常有帮助,感谢清楚我的Array S和ArrayList正在圈出。 – TOD

0

可以说lamborghiniList是兰博基尼对象名单.. 在构造函数或setter方法 你可以试试下面的代码初始化...

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

    List<Lamborghini> desiredObjects = new ArrayList<Lamborghini>(); 

    for (int i = 0; i < lamborghiniList.size(); i++) { 
     if (lamborghiniList.get(i) != null) { 
      if ((lamborghiniList.get(i).getHorsePower() >= lowHP) && 
        ((lamborghiniList.get(i).getHorsePower() <= highHP))) { 
       desiredObjects.add(lamborghiniList.get(i)); 

      } 
     } 
    } 
    return desiredObjects.toArray(); 
}