2016-12-04 7 views
-1

配列を関数に渡す必要がありますが、プログラムにエラーがあり、コンパイルできません。私は間違って何をしていますか?配列を関数に渡す際にエラーが発生しました。コンパイルできません

  1. 私はライン13上のエラーを取得しています: "a1e.averData(スコア、MAX_SIZE);"
  2. エラー状態、「非静的変数スコアは 静的コンテキストから参照することはできません。割り当て戻り値新しい変数には、」
  3. 私はまた、新しい変数に戻り値を代入しようとしました。これは次のようになります: "float averData = a1e.averData(スコア、MAX_SIZE);"
  4. 誤差はこれに変更された:「非静的変数スコアは静的コンテキストから参照することができない非静的変数MAX_SIZEが静的コンテキストから参照することができない。」私は他のスポットに主からそれを移動しようとしている
  5. プログラムでは、しかし、それは私のために働くことを望んでいないようで、私はそれを修正する方法が不明です。ここで

私のコードです:

package array1example; 

    public class Array1example 
    {  
     int i, sum; 
     float avg; 
     int scores[]; 
     int MAX_SIZE = 0; 
     /** 
     * 
     * @param args 
     */ 
     public static void main(String[] args) 
     { 
     /* An example of an array being passed to a function 
      This program stores integers in an array 
      and computes their average*/ 


      Array1example a1e = new Array1example(); 
     } 

     public Array1example() 
     { 
     this.scores = new int[]{5, 5, 12, 17, 11}; 
     a1e.averData(scores,MAX_SIZE); 
     } 
     private float averData(int[] scores1, int MAX_SIZE1) 
     { 

      int size = 0; 
      for(i=0, sum=0; i<size; i++) 
      { 
      System.out.println("Score " + " = " + scores1[i]); 
      sum += (scores1[i]); 
     } 
      avg = sum/i; 
      System.out.println("Average score: " + avg); 
     return avg;   
     } 

     } 
+0

にそれを変更すると、あなたのコンストラクタでa1e.averData(scores,MAX_SIZE);を使用することはできませんそのエラーを反映し、コンストラクタで 'a1e'を使用しようとすると、さらに多くの問題が追加されました。元の問題は、直接許可されない「メイン」の内部に「得点」を渡そうとすることと関係していたと私は考えている。あなたは 'a1e.scores/MAX ... 'をする必要があります。 – ChiefTwoPencils

+0

さようなら!叫ぶ必要はありません! –

答えて

1

あなたは ではなく、もはや私はあなたのコードを変更したと思うaverData(scores,MAX_SIZE);

+0

コンストラクタは静的コンテキストに似ています。ただし、オブジェクトは静的ではありません。 –

+0

'a1e'は' main'メソッドのローカル変数であるため、そのメソッドの外側では使用できません。また、コンストラクタでは、あなたが作成しているオブジェクトの内部にあるので、ドット表記なしでオブジェクトのメソッドを呼び出すこともできません。 –

+0

私はあなたが提案したことをやってみたが、まだコンパイルしていない。 –

関連する問題