Там есть несколько вопросов, с вашим код. Во-первых, вы пытаетесь использовать 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;
Можете ли вы показать декларацию 'Lamborghini'? – resueman
.size(), и вы получаете индекс .get (i) – Steven
Возможный дубликат [Как найти длину списка массивов?] (Http://stackoverflow.com/questions/9652732/how-to- find-the-length-of-the-array-list) –