2015-12-06 65 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(); 
}