根据用户输入的数字在循环中初始化新对象

时间:2015-05-12 12:09:52

标签: java linked-list

我有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元素时,它只会多次显示相同的数据。

请帮助。

4 个答案:

答案 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()
}