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;
}

ComputerKit のコンストラクターで、ComputerPart オブジェクトを arraylist に追加しようとしています。必要な数の ComputerParts を ComputerKit に追加できるようにしたいと考えています。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() を呼び出したときに、String 型のアイテムと価格のプライベート変数を取得できません。

うまくいけば、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);
    }
}

あなたが超賢いと感じているなら、宣言された型を からArrayListに変更してListください:

private List<ComputerPart> parts = new ArrayList<>();
于 2013-03-05T03:17:12.673 に答える
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 に答える
0

ArrayList が ComputerPart オブジェクトを取得しているのに対し、コードでは配列を追加しているため、この行はコンパイラ エラーを発生させるはずです。

 parts.add(x, cp);

に変更します

 parts.add(x, cp[x]);
于 2013-03-05T03:19:23.203 に答える