我有以下代码:
class Person{
private Car [] cars;
public Person(){
//other variables...
cars = new Car[10];
}
//other methods.....
//...
//...
public void setCar(Car car, int position){
this.cars[position] = car;
}
public Car getCar(int position){
return cars[position];
}
}
我的Car
课程没有问题,我遇到的问题是我为数组分配了新的Car
。
这就是我分配它的方式:
public class MainClass{
public static void main(String [] args){
Car newCar = new Car();
Person newPerson = new Person();
int position = 0;
int x= 0;
int option;
do{
//Code for menu options and user input detection of options...
//...
//...
switch(option){
case 1:
// get user input and set it to newCar variables.....
newCar.setVariableX();
newCar.setVariableY();
//assigment of new car to array of cars in newPerson
newPerson.setCar(newCar,position);
position++;
break;
case 2: x =2; //exit option
break;
}while(x!=2);
// invoque print option for Array of Cars
}
}
因此,对阵列的分配似乎是正确的并且打印出来只有 ONE Car
,但是如果我添加 MORE 而不是{{ 1}},它将新的car
变量分配给数组的所有位置。例如:
car
我得到的结果是
Add car1 to cars[position].
position++
Add car2 to cars[position].
发现问题谢谢你们:
cars[0] = car2;
cars[1] = car2;
答案 0 :(得分:0)
你应该有这个:
newCar = new Car();
newCar.setVariableX();
newCar.setVariableY();
您总是添加相同的引用,因此在修改对象时,会修改数组中的所有对象。
答案 1 :(得分:0)
将Car newCar = new Car()
语句移到你的do while
循环中,它应该按预期工作。
答案 2 :(得分:0)
您可以使用ArrayList存储多个对象,并在需要时添加/删除。这样你就不仅限于10辆汽车。
class Person{
private ArrayList<Car> cars;
public Person(){
cars = new ArrayList<Car>();
}
//other methods.....
//...
//...
public void setCar(Car car, int position){
this.cars[position] = car;
}
public Car getCar(int position){
return cars[position];
}
public void addCar(Car car){
cars.add(car);
}
}
此外,您当前的问题是您不断添加相同的Car对象,因为newCar永远不会被重新分配。