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构造函数中的arraylist。我希望能够根据需要向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。它可以添加一个Object但是如果我把它作为一般对象,那么当我调用parts.get(x).toString()时,我不会在String类型中获得项目和价格私有变量。
我会继续努力,希望我能在3个小时内弄清楚它应有的lololol! 谢谢!
答案 0 :(得分:0)
private ArrayList <ComputerPart> parts = new ArrayList<>();
您应该使用原始行获取编译器警告。
答案 1 :(得分:0)
此代码看起来很好。您是如何调用不适合您的ComputerKit
构造函数的?您应该更改的一件事是如何将部件添加到列表中:
public ComputerKit(ComputerPart ... cp){
for(ComputerPart part : cp){
parts.add(cp);
}
}
如果您感觉超级聪明,请将声明的类型从ArrayList
更改为List
:
private List<ComputerPart> parts = new ArrayList<>();
答案 2 :(得分:0)
这行应该给编译器错误,因为你的ArrayList正在使用ComputerPart对象,而在代码中你正在添加一个数组。
parts.add(x, cp);
将其更改为
parts.add(x, cp[x]);
答案 3 :(得分: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;
}