2016-07-20 3 views
0

я следующие:сеттеры на основе индекса массива в Java

public class Car{ 
public Car() 
{//some stuff 
} 
private Car [] carmodels ; 
public Car [] getCarModel() { 
return this.carmodels; 
} 

public void setcarModel(Car [] carmodels) { 
this.carmodels = carmodels; 

} 

Теперь на моем тестовом классе, у меня есть что-то вроде этого

public void main (String [] args) 
{ 
    Car car1= new Car(); 
    car.setcarModel(new Car[5]);//here i create an array of Car 

    for(int i =0;i<5;i++) 
    { 
    // how can i created 5 cars and set them based on index i 
    // car.setCarModel[new Car()]???? 
    } 
} 

Как это сделать? Я мог бы использовать массив temp типа Car, который я могу передать моему Setter сразу после цикла. Но есть ли лучший способ?

+0

Какая ваша цель? добавить 5 новых автомобилей в carmodels car1? –

+0

Это точно моя цель; без использования массива temp типа – user3841581

ответ

1

Добавить сеттера, который принимает индекс:

public void setCarModel(int index, Car carModel) { 
    this.cardmodels[index] = carModel; 
} 

Затем внутри контура, вызовите

car.setCarModel(i, new Car()); 
+0

Как массив знает, какой размер ему нужно (сколько индексов ему нужно). это было какое-то время, когда я использовал java, но если я правильно помню, то массивы фиксированного размера. –

+0

@SvenB По-видимому, его размер фиксирован на 5. – shmosel

1
for(int i =0;i<5;i++) 
{ 
    car.getCarModel()[i] =new Car(); 
} 

или

Написать другой перегруженный сеттер пропускания индекса.

public void setCarModel(int index, Car c) 
{ 
carmodels[index] = c; 
} 

for(int i =0;i<5;i++) 
{ 
    car.setCarModel(i, new Car()); 
} 
2

Если вы настаиваете на не используя значение Темп в течение цикла можно использовать ArrayList вместо массива для carmodels.

чем добавить метод

public void addCar(Car toadd) 
{ 
    carmodels.add(toadd); 
} 

, чем в цикле FOOR просто позвоните

for(int i =0;i<5;i++) 
{ 
    car.addCar(new Car()); 
} 

Im предполагая, что размер может меняться, и что массив фиксированного размера не является достаточным.

3

Смотрите метод getCarModel? Этот метод возвращает Car[]? Это означает, что вы можете делать все, что вы можете сделать в массиве на car1.getCarModel()!

Итак, как вы устанавливаете элемент по индексу массива? Вы можете сделать это:

someArray[someIndex] = someValue; 

Если применить это в массив, возвращаемый car1.getCarModel,

car1.getCarModel()[i] = new Car(); 

Это способ сделать это.

В качестве альтернативы, вы ча написать еще один метод в Car, который устанавливает элемент в массиве моделей автомобилей:

public void setItemInCarModels(int index, Car item) { 
    carModels[index] = item; 
} 

Простой!

Btw, ваша модель не имеет смысла ...

Смежные вопросы