我将创建一个我想要添加元素的列表。我通过他们从客户那里获得了元素,完成了3个对话框,表明他们对新车的偏好,现在我想将这些条目添加到列表中。
我已经声明了我的实例变量,这里是我的列表的构造函数:
public Car(String aMaker, String aModel, int aYearBuilt);
{
super();
this.maker = aMaker;
this.model = aModel;
this.year = aYearBuilt;
}
我已成功将第一个客户对话框的返回信息放入3个变量中,这样就创建了:
String inputMaker;
String inputModel;
int inputYear;
(我记得使用Integer.parseInt将对话输入字符串转换为int。)
现在我想将值放在列表中:
List<Car> newCarDetails = new ArrayList<Car>();
这是我开始出错的地方:
newCarDetails.add(new Car(inputMaker, inputModel, inputYear));
return newCarDetails;
只有我明显低估了这项任务,因为它不起作用。我刚回到hashCode。非常感谢任何帮助。
答案 0 :(得分:3)
您的代码对我来说很好。您正在将新Car
添加到之前创建的List<Car>
。如果用“哈希码”表示当你执行System.out.println(newCarDetails)
时会得到一些像<java.util.List<0x123456>>
这样的输出,那就是当你尝试打印没有toString()
方法的任何类时会发生什么。很多Collections框架类都没有。
如果你想要打印它,try the technique here。
答案 1 :(得分:0)
使用输入列表:
List<Car> newCarDetails = new ArrayList<Car>();
newCarDetails.add(new Car(inputMaker, inputModel, inputYear));
答案 2 :(得分:0)
我不知道您的输出媒体是什么,但您可以遍历列表以格式化输出:
for (Car newCar : newCarDetails) {
System.out.println("Make: " + newCar.getAMaker());
System.out.println("Model: " + newCar.getAModel());
System.out.println("Year: " + newCar.getAYearBuilt());
}
或者,您可以覆盖Car的toString()
方法来规范格式
class Car {
...
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(this.aMaker);
sb.append(",");
sb.append(this.aModel);
sb.append(",");
sb.append(this.aYearBuilt);
sb.append(",");
return sb.toString();
}
}
...
for (Car newCar : newCarDetails) {
System.out.println(newCar.toString());
}
答案 3 :(得分:0)
你实际上没有说过你要对返回的值做什么,或者它是如何表现的,只有这样:
只有我明显低估了这项任务,因为它不起作用。我刚回到hashCode。非常感谢任何帮助。
嗯。我的通灵调试技巧表明你在toString
或ArrayList<Car>
本身上调用了Car
,并且返回了一些看起来不太有用的内容。
选项:
Car
中的各个值(例如通过调用属性)toString
课程中的Car
如果这些都没有用,请编辑您的问题以提供有关您在列表中所做工作的更多信息...