我有一个学校作业,要求我将一个“水果”类的未知数量的实例添加到一个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;
}
}
答案 0 :(得分:3)
在将水果添加到篮子方面,您的代码看起来很好。我认为你得到的是System.out.println(basket.get(i))
。您基本上是要求打印Fruit
对象,但运行时不知道如何执行此操作,因此尝试通过调用Fruit
将toString()
转换为某些字符串表示形式方法就可以了。我认为你的Fruit
类打印相同的String,无论它内在的是什么。尝试覆盖toString()
方法以获得正确的结果。
public class Fruit
{
@Override
public String toString()
{
return this.getName() + " " + this.getColor() + " " + this.getMass();
}
}