2013-03-05 2 views
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 в arraylist в конструкторе ComputerKit. Я хочу иметь возможность добавить столько компьютеров в ComputerKit, сколько захочу. Вот соответствующий код ComputerPart:Построение объектов при добавлении в ArrayList

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 специально. Он может добавить объект, но если я оставлю его как общий объект, тогда, когда я вызову part.get (x) .toString(), я не получу частные переменные item и price в String.

Я буду продолжать работать над этим, надеюсь, я выясню это через 3 часа, когда его должный лололол! Спасибо!

+0

'cp' содержит * все * части компьютера, поэтому вы добавляете их все в свой список несколько раз. –

+0

Кроме того, вы можете переопределить метод 'toString()' в 'ComputerPart', чтобы предоставить нужный вам результат. –

ответ

0

Этот строка должна давать ошибку компилятора, так как ваш ArrayList принимает объект ComputerPart, тогда как в коде вы добавляете массив.

parts.add(x, cp); 

Изменить его

parts.add(x, cp[x]); 
+0

О, боже мой, это мгновенно решило. Ты мой спаситель, я буду следовать за тобой до глубины ада. Спасибо чувак! Однако я не получал ошибку компилятора. ToString() будет просто выводить Object.toString() (объект по умолчанию один) – user2134108

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

Вы должны получить предупреждение о компиляторе с исходной строкой.

0

Этот код выглядит хорошо. Как вы пытаетесь вызвать конструктор ComputerKit, который не работает для вас? Одна вещь, которую вы должны изменить то, как части будут добавлены в список:

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

и если вы чувствуете себя супер-умный, изменить заявленный тип из ArrayList в List:

private List<ComputerPart> parts = new ArrayList<>(); 
0
private ArrayList<ComputerPart> parts; 
//Constructor 
public ComputerKit(ComputerPart... cp){ 
    parts = new ArrayList<ComputerPart>(Arrays.asList(cp)); 
} 

Кроме того, вы должны быть переопределение toString() в ComputerPart, если вы не хотите, представление объекта String, по умолчанию. Что-то вроде

public String toString(){ 
    return item + " " + price; 
} 
+0

Да, я полагаю, это была соответствующая часть кода, которую я забыл, хе. Я переопределил toString() для ComputerPart. Благодаря! – user2134108

Смежные вопросы