将存储为变量的值添加到java列表时出现问题

时间:2011-04-12 17:07:34

标签: java

我将创建一个我想要添加元素的列表。我通过他们从客户那里获得了元素,完成了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。非常感谢任何帮助。

4 个答案:

答案 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。非常感谢任何帮助。

嗯。我的通灵调试技巧表明你在toStringArrayList<Car>本身上调用了Car,并且返回了一些看起来不太有用的内容。

选项:

  • 格式化时使用Car中的各个值(例如通过调用属性)
  • 使用您选择的格式覆盖toString课程中的Car

如果这些都没有用,请编辑您的问题以提供有关您在列表中所做工作的更多信息...