1

このコードは、クラスの課題として開始しました。オブジェクトの配列を作成するクラスを設定します。配列を特定のサイズ、またはデフォルトのサイズ 100 で初期化できるように、2 つのコンストラクターがあると想定されています。

public class Set {

    private int maxObjects;
    private int sz;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        Object[] a = new Object[maxObjects];
    }

    public Set() {
        this.maxObjects = 100;
        this.sz = 100;
        Object[] a = new Object[100];
    }

    public void add(Object object) {
        a[0] = Object;
    }

私が遭遇している問題は、メソッドaで変数として表示されないことです。add()また、配列は設定された容量で初期化されるはずですが、空であり、その方法がわかりません。

4

4 に答える 4

4

amaxObjectsとszを定義したのと同じ場所を定義する必要があります。

private Object[] a;

次に、これをコンストラクターに配置します。

a = new Object[maxObjects];

変数のスコープについて読んでください。

于 2012-09-26T02:42:45.070 に答える
2

あなたはこれを正しくすることに非常に近いです。あなたが抱えている問題は、変数の範囲に関連しています。変数aのスコープを詳しく調べます。

また、addメソッドにタイプミスがあります。

a[0] = Object 

する必要があります

a[0] = object 

(小文字のo)

于 2012-09-26T02:42:42.573 に答える
1

メソッドa内の変数として表示されていませんadd()

あなたの問題は、コンストラクターa宣言されているSetため、コンストラクターに対してローカルです。addこれは、コンストラクターの外部 (メソッドなど) では使用できないことを意味します。

解決策は非常に簡単です。他のフィールドで宣言aします。

public class Set {

    private int maxObjects;
    private int sz;
    private Object[] a;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        this.a = new Object[maxObjects];
    }

    public Set() {
        this.maxObjects = 100;
        this.sz = 100;
        this.a = new Object[100];
    }

    public void add(Object object) {
        a[0] = object;
    }
}

Java のスコープについて読むことをお勧めします (簡単な Google 検索でヘルプが表示されます)。

また、配列は設定された容量で初期化されることになっていますが、空です。

これはデフォルトで行われます。非プリミティブ型の配列の場合、配列の要素はすべて に初期化されnullます。ここで、all- nullarray は本質的に空の配列です。通話new Object[capacity]はあなたのためにこれを行っています。

于 2012-09-26T02:46:34.150 に答える
1

いくつかのこと:

  • aフィールドである必要があります
  • デフォルトのコンストラクターは、他のコンストラクターを呼び出す必要があります
  • 打ち間違え

これを試して:

public class Set {

    private int maxObjects;
    private int sz;
    private Object[] a;

    public Set(int maxObjects) {
        this.maxObjects = maxObjects;
        this.sz = maxObjects;
        a = new Object[maxObjects];
    }

    public Set() {
        this(100);  // fyi, this is the syntax for calling another constuctor
    }

    public void add(Object object) {
        a[0] = object;
    }
}
于 2012-09-26T02:46:45.103 に答える