0

クラスおよびメソッド全体で配列にアクセスできるようにするにはどうすればよいですか? 今、私は似たようなものを持っています

public class Class
{
public int[] array = new int[value];
public static int var;
    public void callArray()
    {            
        for(int x = 0; x < array.length; x++)
            var++;
        for(int x = 0; x < array.length; x++)
        {
            value[x] = var;
            var = 0;
        }
    }

    public void anotherMethod()
    {
    int[] array = new int[var];
         for(int x = 0; x < array.length; x++)
             System.out.println(array[x])
    }
}  
public class AnotherClass extends Class
{
int[] array = new int[var];
    for(int x = 0; x < array.length; x++)
        System.out.println(array[x]);
}

そして、そのようなことをするたびに、null ポインターまたは範囲外の配列を取得します。複数のクラスとメソッドで配列を使用できるようにするにはどうすればよいですか?

4

3 に答える 3

3

arrayがクラス (インスタンス変数) のメンバーであると仮定すると、新しいローカル変数を作成する代わりに、それを使用する必要があります。

 int[] array = new int[value];

インスタンス変数を操作する代わりに、新しいローカル変数を作成し、それを「操作」しています。

本当に必要なものは次のとおりです。

public void callArray() {
    array = new int[value];
    //^^ note that we do not declare a new variable, and thus we use the instance variable

    for(int x = 0; x < array.length; x++)
        //code
}
于 2012-11-25T05:46:02.450 に答える
2

配列をフィールドにする必要があります。

class MyClass {
    int[] array = new int[5];

    public void callArray()
    {
        for(int x = 0; x < array.length; x++)
            //code
    }

    public void anotherMethod()
    {
         for(int x = 0; x < array.length; x++)
             System.out.println(array[x])
    }
于 2012-11-25T05:45:42.210 に答える
0

多くのさまざまなクラスインスタンスから配列へのプロセス全体のアクセスが必要な場合は、シングルトンクラス内にラップできます。「callArray」および「anotherMethod」メソッドが実装されている 1 つのオブジェクト内でのみ配列にアクセスする必要がある場合は、単に配列をクラス フィールドとして宣言できます。

public YourClass {
    private int[] array = new int[value];

    public void callArray()
    {
        for(int x = 0; x < array.length; x++)
            //code
    }

    public void anotherMethod()
    {
       for(int x = 0; x < array.length; x++)
          System.out.println(array[x])
    }
}
于 2012-11-25T05:56:34.187 に答える