2016-07-20 15 views
0

Ich habe folgend:Setters basierend auf Array-Index in 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; 

} 

nun auf meiner Test-Klasse, ich habe so etwas wie diese

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()]???? 
    } 
} 

Wie kann das tun? Ich könnte ein Temp-Array vom Typ Car verwenden, das ich direkt nach der Schleife an meinen Setter übergeben kann. Aber gibt es einen besseren Weg?

+0

was ist Ihr Ziel? füge 5 neue Autos zu car1's carmodels hinzu? –

+0

Das ist genau mein Ziel; ohne Verwendung eines temporären Arrays vom Typ Car – user3841581

Antwort

1

einen Setter hinzufügen, die einen Index akzeptiert:

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

Dann in Ihrem Schleife, rufen

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

Woher weiß das Array, welche Größe es benötigt (wie viele Indizes es benötigt)? Es ist schon eine Weile her, dass ich Java benutzt habe, aber wenn ich mich richtig erinnere, sind Arrays fest eingestellt. –

+0

@SvenB Anscheinend ist seine Größe auf 5 festgelegt. – shmosel

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

oder

einen anderen überlasteten setter Schreiben durch den Index übergeben.

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

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

Wenn Sie darauf bestehen, keinen Temperaturwert in der for-Schleife können Sie eine ArrayList anstelle eines Arrays für die Automodelle verwenden.

als eine Methode hinzufügen

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

als in Ihrem foor Schleife rufen nur

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

Im die Größe annimmt, kann variieren, und dass eine feste Größe Array ist nicht ausreichend.

3

Siehe Methode getCarModel? Diese Methode gibt eine Car[] richtig? Das bedeutet, dass Sie alles tun können, was Sie in einem Array unter car1.getCarModel() tun können!

Wie also setzen Sie ein Element auf einen Index eines Arrays? Sie tun dies:

someArray[someIndex] = someValue; 

Wenn wir dies auf das Array zurück gelten von car1.getCarModel,

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

, dass die Art und Weise, es zu tun.

Alternativ ca Sie eine andere Methode in Car schreiben, dass ein Element in den Automodellen Array Sets:

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

einfach!

Btw, macht Ihr Modell keinen Sinn ...

Verwandte Themen