【发布时间】:2011-11-19 22:32:06
【问题描述】:
我有两个问题。我这里有一个类型为ArrayList 的对象,对于这种情况,我们称之为"Car"。
我做了两个:
Car car1 = new Car();
Car car2 = new Car();
我有一个向这些 Car 对象添加项目的功能:
car1.addPart("Front Wheels");
car1.addPart("Rear Wheels");
car1.addPart("Rear View Mirror");
car2.addPart("Rims");
car2.addPart("Steering Wheel");
car2.addPart("Bumper");
我需要一个名为 sameContents() 的函数,我可以在 car1 上调用它:
car1.sameContents(car2);
传入一个ArrayList类型的对象,并用car1检查它们是否具有相同的内容和相同的顺序。
public boolean sameContents(Car c) {
ArrayList<String> other_car = c; // error: Type mismatch:
// cannot convert from Car to ArrayList<String>
for (String c : this.parts) {
System.out.println(c);
for(String oc : other_car) {
// stuff
}
}
}
我似乎对这个有各种各样的问题。我无法在 foreach 循环中使用 other_car 变量。
第二个需要做的是transferContents。
它被称为:
car1.transferContents(car2);
将car2 中的项目转移到car1,然后将car2 留空。我似乎无法让 ArrayList 在我认为我需要的 foreach 循环中再次工作。
public void transfer(Car c) {
// code for transfer method.
// this.parts is the arraylist of car parts
for (Car c: c) {
this.parts.add(c);
}
// not sure how to set car2 to empty...
}
【问题讨论】:
-
好的……还有……你的问题是什么?到目前为止你有什么?你试过什么?
-
你从 'sameContents' 方法确切的堆栈跟踪中得到了什么错误。如果它是空指针异常,那么还向我们展示参数 C 在传入之前是如何填充的。你为什么要循环 'this.parts'。
-
好吧,那是因为 other_car 有 'Car' 对象而不是 'String' 对象。将 'for(String oc : other_car)' 更改为 'for(Car oc : other_car)'
-
@Shahzeb:没有意义“other_car 有 'Car' 对象而不是字符串......”我们仍然不知道 Car 类是什么,它扩展了什么,或者它包含什么。
-
@Hovercraft Full Of Eels 是的,我同意。德鲁,你的问题很有可能很好吃;这就是我们这么多人在这里的部分原因:) 但就像 Hover 说的那样,我们需要完整的画面。一开始我以为你的汽车对象有数组,但再读一遍,我发现你说的是数组。请在此处添加整个汽车类。是扩展 ArrayList 吗?