-3

私はというクラスを持っていますElementInfo

public class ElementInfo {

    public String name;
    public String symbol;
    public double mass;

}

ElementInfo次に、次のような配列を作成しようとします。

ElementInfo e[] = new ElementInfo[2];

e[0].symbol = "H";
e[0].name = "Hydrogen";
e[0].mass = 1.008;

//...

newクラスのすべてのインスタンスを呼び出す必要があると言わないでください!

私はこれを行うことができます:

ElementInfo e[] = new ElementInfo[100];
for(ElementInfo element: e){
    e = new ElementInfo();
}
4

8 に答える 8

3

クラスのすべての要素に対してnewを呼び出す必要があります。

public class ElementInfo {

    private String name;
    private String symbol;
    private double mass;

    public String get_name() { return name; }
    public String get_symbol() { return symbol; }
    public double get_mass() { return mass; }

    public ElementInfo(name, symbol, mass) {
        this.name = name;
        this.symbol = symbol;
        this.mass = mass;
    }
}

次に、次のように作成します。

e[0] = new ElementInfo("H", "Hydrogen", 1.008);
于 2012-09-07T21:37:13.023 に答える
3

クラスのすべてのインスタンスに対してNEWを呼び出す必要があると言わないでください!

その通り。

nullの配列を作成しました。

于 2012-09-07T21:37:26.347 に答える
3
ElementInfo e[] = new ElementInfo[2];

e[0] = new ElementInfo();
e[0].symbol = 'H'; ...
于 2012-09-07T21:38:03.443 に答える
3

要素ごとに新しいインスタンスを作成する必要がありますが、難しくはありません。

ElementInfo e[] = new ElementInfo[2];
for (int i = 0; i < e.length; i++)
    e[i] = new ElementInfo();
于 2012-09-07T21:38:03.307 に答える
2

はい、あなたはしなければなりません。

配列を作成するときは、実際のオブジェクトへの参照用のスペースを作成するだけです。最初の値はnullです。

オブジェクトへの参照を配置するには、割り当てを行います

e[0] = new ElementInfo();

また

ElementInfo a = new ElementInfo();
....
e[0] = a;

リラックスして、タイピングはプログラマーとしての最後の問題になります:-D

于 2012-09-07T21:38:51.260 に答える
1

配列を宣言することにより、その配列の型のインスタンスが自動的に配列を埋めることはありません。

e[0] = new ElementInfo();

forループを使用して、すべてのインデックスでオブジェクトを簡単にインスタンス化することもできます。

for (int i = 0; i < e.length; i++) {
    e[i] = new ElementInfo();
}
于 2012-09-07T21:40:16.210 に答える
1

はい。現在、ElementInfoオブジェクトを保持する配列ですが、各インデックスはnullです。

引数を取るコンストラクターを作ってみませんか。それで

ElementInfo [] elements = {new ElementInfo("H", "Hydrogen", 1.008), new ElementInfo("C", ....)};
于 2012-09-07T21:40:59.487 に答える
0
ElementInfo e[] = new ElementInfo[100]; 
for(ElementInfo element: e){ 
    e = new ElementInfo(); 
}

は配列型変数であるため、これを行うことはできません。つまりe、型のオブジェクトへの参照を割り当てることはできませんElementInfoe = new ElementInfo();私が言及しているものです。

ダルムスの答えを見てください。

于 2012-09-07T21:50:29.377 に答える