2017-11-12 14 views
1

私は2次元配列を持ち、配列のサイズを予定の数と同じにしたいと考えています。予定の数は、このラインJavaのメソッドから配列のサイズを変更する

numOfAppointments = DB.numOfAppointmentsByUser(loggedInUserID); 

と別のクラスに発見し、それが全体のプログラムからアクセスできるように私は、これはつまり、プログラムの先頭に配列を宣言されています

String[][] data = new String[numOfAppointments][2]; 

しかし、データ配列の上にnumOfAppointmentsを呼び出すことはできません。メソッドに含まれていないため、このエラーが発生します。 error: <identifier> expectedメソッドのnumOfAppointmentを呼び出すと、そのメソッドのデータ配列を宣言する必要がありますnumOfAppointmentsの値を配列のサイズとして使用します。

すべてのメソッドからアクセスできるようにプログラムの最上部で配列を宣言できるようにするにはどうすればよいですか?同時にnumOfAppointments変数を呼び出して、配列のサイズを作成できます。私はこのようなコンストラクタでそれらの両方を配置しようとしている

は:

numOfAppointments = DB.numOfAppointmentsByUser(loggedInUserID); 

public String[][] data = new String[numOfAppointments][2]; 

は私の代わりに、コンストラクタで配列を公開しようとしたが、それは誤りillegal start of expressionを与え、私はpublicその後、データ配列を削除した場合公開されておらず、そのメソッドの子であるため、他のメソッドからアクセスすることはできません。助けてくれてありがとう。

+0

静的ワードの目的は何ですか? :) –

答えて

3

グローバルに利用できるようにするには、次の宣言をコンストラクタの外に移動する必要があります。

public String[][] data; 

public Constructor(...) { 
    int numOfAppointments = DB.numOfAppointmentsByUser(loggedInUserID); 

    data = new String[numOfAppointments][2]; 
} 
+1

うわーはとてもシンプルで、年齢の問題を解決しようとしていました。それは、ありがとう、それをした:) –

+0

コンストラクタはメンバー変数に値を割り当てる必要があります。他のクラスやオブジェクトのメソッドを呼び出すべきではありません!したがって、コンストラクタパラメータとしてアポイントメントの数を渡す必要があります。 –

+1

ああ、それを持って、私は今これを変更します、ありがとう –

関連する問題