将未知数量的对象添加到arraylist

时间:2013-09-15 00:15:08

标签: java object arraylist

我有一个学校作业,要求我将一个“水果”类的未知数量的实例添加到一个arraylist“篮子”并打印出每个水果对象的细节,我的代码将结果添加到arraylist但是每次离开我时都会覆盖同一个项目的arraylist。到目前为止,这是我的代码:

import java.util.*;
public class Question1
{
   public static void main(String[]Augs)
   {
      List<Fruit> basket = new ArrayList<Fruit>();
      int input;
      Scanner inp = new Scanner(System.in);
      String name;
      String colour;
      double mass;
      int k = -1;
      while (true)
      {
         System.out.println("Enter option: (1) add fruit (2) quit:");
         input = inp.nextInt();
         if (input==2)
            break;
         else
         {
             k++;
            System.out.println("Enter name, colour and mass in kg separated by space");
            name = inp.next();
            colour = inp.next();
            mass = inp.nextDouble();
            Fruit temp = new Fruit(name, colour, mass);
            basket.add(temp);
         }
      }
      for (int i = 0; i<basket.size(); i++)
      {
         System.out.println(basket.get(i));
      }
   }
}

//fruit class
public class Fruit
{
   private String name;
   private String colour;
   private double mass;
   public Fruit(String name, String colour, double mass)
   {
      this.name=name;
      this.colour=colour;
      this.mass=mass;
   }
   public String toString()
   {
      return name + " " + colour + " " + mass;
   }
}

1 个答案:

答案 0 :(得分:3)

在将水果添加到篮子方面,您的代码看起来很好。我认为你得到的是System.out.println(basket.get(i))。您基本上是要求打印Fruit对象,但运行时不知道如何执行此操作,因此尝试通过调用FruittoString()转换为某些字符串表示形式方法就可以了。我认为你的Fruit类打印相同的String,无论它内在的是什么。尝试覆盖toString()方法以获得正确的结果。

public class Fruit
{
    @Override
    public String toString()
    {
        return this.getName() + " " + this.getColor() + " " + this.getMass();
    }
}