我有LinkedList
类型的汽车,我在该班级有一个功能来输入有关汽车的数据。我想询问用户他想在LinkedList
中存储多少辆汽车,以便我可以根据该号码创建对象,然后在每个对象上调用该函数。我无法弄清楚如何根据用户编号启动对象。这就是我能想到的:
LinkedList<Car> my_car = new LinkedList <Car>();
System.out.println("How many cars you want to store?:");
int car_num = key.nextInt();
for(int i=0 ; i<car_num ; i++)
{
my_car.add(new Car());
//this doesn't work because it just adds empty Car objects
//I couldn't figure out how to call .Enter_car_data()
//function here for each object created
}
我的一位朋友告诉我,我可以使用一个对象,然后将其添加到
LinkedList
,然后重新使用它!它没有用,因为当我想显示LinkedList
元素时,它只会多次显示相同的数据。
请帮助。
答案 0 :(得分:4)
您应该在循环中创建一个新变量。
for(int i=0 ; i<car_num ; i++)
{
Car car = new Car();
car.doSomething(); //use your modifying method here
my_car.add(car);
}
答案 1 :(得分:1)
你有几个选择。
直接创作 您可以创建Car,调用Enter_car_data方法并将汽车添加到列表中:
for (int i = 0; i < car_num; i++)
{
Car car = new Car();
car.Enter_car_data();
my_car.add(car);
}
使用其他方法 将汽车的创建和人口移动到专用方法。
for (int i = 0; i < car_num; i++)
{
Car car = getCar();
my_car.add(car);
}
在课堂的其他地方,您将拥有getCar()
方法。
private Car getCar()
{
Car car = new Car();
car.Enter_car_data();
return car;
}
这种方法稍微冗长一点,但它有助于为您提供更易读的代码。
答案 2 :(得分:0)
试试这个:
Car car = new Car();
enterCarData(car);
my_car.add(car);
答案 3 :(得分:0)
你可以做人们所说的,即将其分配给临时变量然后初始化
Car tmp = new Car();
tmp.enter_car_data();
my_car.add(tmp);
或者你可以定义car类的默认构造函数来执行enter_car_data会做的事情。
public Car(){
this.enter_car_data()
}