0
public class ComputerKit {
private ArrayList <ComputerPart> parts = new ArrayList();
//constructor
public ComputerKit(ComputerPart ... cp){
    for(int x=0;x<cp.length;x++){
        parts.add(x, cp);

    }
}

//method toString
@Override
public String toString(){
    String s = parts.get(0).toString();

    return s;
}

我正在尝试将 ComputerPart 对象添加到 ComputerKit 构造函数中的数组列表中。我希望能够根据需要向 ComputerKit 添加尽可能多的 ComputerPart。这是ComputerPart的相关代码:

public class ComputerPart {
//two instance variables representing a computerpart
private String item;
private double price;
//constructor
public ComputerPart(String i, double p){
    setItem(i);
    setPrice(p);
}

我认为,我的问题是编译器不知道如何专门添加 ComputerPart。它可以添加一个对象,但如果我将其保留为一般对象,那么当我调用parts.get(x).toString() 时,我将不会获得字符串类型的项目和价格私有变量。

我会继续努力的,希望我能在 3 小时内搞清楚,当它到期时,哈哈!谢谢!!

4

4 回答 4

0
private ArrayList <ComputerPart> parts = new ArrayList<>();

您应该在原始行中收到编译器警告。

于 2013-03-05T03:15:30.960 回答
0

这段代码看起来不错。您如何尝试调用ComputerKit不适合您的构造函数?您应该更改的一件事是如何将零件添加到列表中:

public ComputerKit(ComputerPart ... cp){
    for(ComputerPart part : cp){
        parts.add(cp);
    }
}

如果您觉得自己超级聪明,请将声明的类型从 更改ArrayListList

private List<ComputerPart> parts = new ArrayList<>();
于 2013-03-05T03:17:12.673 回答
0

此行应该给出编译器错误,因为您的 ArrayList 正在使用 ComputerPart 对象,而在代码中您正在添加一个数组。

 parts.add(x, cp);

将其更改为

 parts.add(x, cp[x]);
于 2013-03-05T03:19:23.203 回答
0
private ArrayList<ComputerPart> parts;
//Constructor
public ComputerKit(ComputerPart... cp){
    parts = new ArrayList<ComputerPart>(Arrays.asList(cp));
}

此外,除非您想要默认的对象字符串表示toString(),否则您应该重写。ComputerPart就像是

public String toString(){
    return item + " " + price;
}
于 2013-03-05T03:27:01.713 回答