1

こんにちは、私は Java を学び始めたばかりですが、あるメソッドで宣言された配列に別のメソッドからアクセスするにはどうすればよいのでしょうか? デザインは次のようになります。

public class Arrays{
  int arraysize = 2;

     public void initializeArray(){
    float array[] = new float[arraySize]; // Declare array  
     }

     public void accessArray(){
     // I want to access the array from this method.
     }

}

4

4 に答える 4

1

これはこのように行われます

public class myClass{
  int arraysize = 2;
  float[] myArray; // Declare array

  public myClass(){
    myArray = new float[arraySize]; // initialize array 
  }

  public float[] accessArray(){
    return myArray;
  }
}

配列宣言は、クラス メソッド内で行ってはなりません。メソッド内で行われる変数宣言は、変数のスコープをメソッドに限定します。(つまり、他の場所では使用できません)。

次に、配列はコンストラクターでインスタンス化されます。コンストラクターは、クラスがインスタンス化されるときに実行される特別な関数です。コンストラクターは、クラスの変数をインスタンス化するために使用されます

次に、accessArray メソッドの戻り値の型を変更する必要があります。void の戻り型は、メソッドが何も返さないことを示します。float[] に変更すると、 accessArray メソッドは配列変数を返すだけで済みます。

編集:「return myArray;」コード行は、これまで関数と呼ばれていたものへの配列への参照を提供します(配列のコピーではなく、実際の配列です。Javaの簡単なことは、コピーを返すプリミティブデータ型を返す場合を除いて、常にこれを行うことです)

accessArray() で配列を返す代わりに配列に float を設定する場合は、次のように実装する必要があります。

public void accessArray(int index, float value){
  myArray[index] = value;
}
于 2013-09-11T23:12:40.473 に答える
1

宣言を移動してメンバーにする必要があります。そうしないと、initializeArray呼び出しが終了するとスコープ外になります。その後、両方のメソッドから配列にアクセスできます。これを試して:

public class Arrays{
   float[] array;
   int arraysize = 2;

   public void initializeArray(){
      array = new float[arraySize];   // Declare array  
   }

   public void accessArray(){
      array[0] = 1.0f;
   }
 }
于 2013-09-11T22:55:05.697 に答える
0

2 つのオプションがあります。

  • その配列をインスタンス変数として宣言します
public class Arrays {

    private int arraySize = 2;
    private float array[];// Declare array

    public void initializeArray() {
        array = new float[arraySize];
    }

    public void accessArray() {
        // I want to access the array from this method.
        float first = array[0];
    }
}
  • 配列をパラメーターとしてメソッドに渡します(initializeArrayメソッドは配列を返す必要があります)
public class Arrays {

    public static void main(String[] args) {
        int arraySize = 2;
        float[] array = initializeArray(arraySize);
        accessArray(array);
    }

    public static float[] initializeArray(int size) {
        return new float[size];
    }

    public static void accessArray(float[] floats) {
        // I want to access the array from this method.
        float first = floats[0];
    }
}
于 2013-09-11T22:52:38.030 に答える