2016-06-01 6 views
0

私はjavaの配列について読んでいて、配列のすべての数字の出現数を計算するためのコードを作った。Javaのmainメソッドで静的配列を作成するには?

public class Example { 

    static int b[] = new int[13]; // I can not do static int b[] = new int[a.length] because a[] in not static array 
    static int count = 0; 

    public static void main(String[] args) { 

     int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 }; 
     counting(a); 
     printCount(); 
    } 

    private static void printCount() { 
     int k = 0; 
     for (int i = 0; i < b.length; i++) { 
      System.out.print("number" + " " + a[k] + " " + "is found" + " "); // here I get error in a[k] because it is not static , eclipse says : a cannot be resolved to a variable 
      System.out.println(b[i] + " " + "times"); 
      k++; 
     } 
     System.out.println(); 

    } 

    private static void counting(int[] a) { 
     for (int i = 0; i < a.length; i++) { 
      for (int k = 0; k < a.length; k++) { 
       if (a[i] == a[k]) { 
        b[i] = ++count; 
       } 
      } 
      count = 0; 
     } 

    } 
} 

I []は、mainメソッドでは静的ではありませんので、そこに私はこの方法で私のA []配列を呼び出すことはできません、私のprintCount()メソッドに捕まってしまいました。 私のメインの方法でstatic int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 };を書こうとしましたが、eclipseはそれを受け入れません。 上記の例のクラスのすべてのメソッドに到達できるように[]静的配列を作成するにはどうすればよいですか?

はprintCount()メソッドで配列を渡し

+2

移動これは...これは、Bは[]宣言されている領域内で宣言されなければなりません。 – CConard96

+2

'b'と' count'のようにグローバル変数にすることができます。あるいは、配列を 'printCount(a);'メソッドのパラメータとして送信し、メソッドのシグネチャを 'private static void printCount(int [] a)'に変更することもできます。 – Gendarme

+0

ありがとう、私はメインの方法でそれを残すことはできませんか?配列の隣に移動せずにそれを処理する方法はありますか? – Joe

答えて

4
public static void main(String[] args) { 

     int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 }; 
     counting(a); 
     printCount(a); 
    } 

ありがとうございます。

+0

ありがとう、私はメインメソッドで静的配列を行うことはできません? – Joe

+0

申し訳ありません。私はdidn; tあなたを得る。これは主な方法にすぎません。アクセスできるように、printCount()メソッドに渡してください。 – FallAndLearn

+0

静的int [] a = {2、3、4、3、3、5、4、10、9、1、9、11、15}このようにメインメソッドでこれを行うことはできません。 }; ' – Joe

2

メインメソッドから移動しないようにするには、[]を静的にしたいのはなぜですか? main()の外側でアクセスできる唯一の方法は、渡された場合です。 Example.a []を通常の静的変数のように呼び出す方法はありません。あなたが初期化された後に[]の長さを取得し、次にメインメソッド内のb []すべての境界を設定する必要があるように思えます。

2

アレイを静的なクラススコープに移動することができます。あなたの配列を練習する場合は、単に配列を変更するだけです。

しかし、ほかにも、私はあなたにscopes in Javaを勉強することをお勧めします。方法のみスコープのうち

public class Example { 

    static int[] a = { 2, 3, 4, 3, 3, 5, 4, 10, 9, 1, 9, 11, 15 }; 
    static int[] b = new int[a.length]; 
    static int count = 0; 

    public static void main(String[] args) { 
     counting(); 
     printCount(); 
    } 

    private static void printCount() { 
     int k = 0; 
     for (int i = 0; i < b.length; i++) { 
      System.out.print("number" + " " + a[k] + " " + "is found" + " "); 
      System.out.println(b[i] + " " + "times"); 
      k++; 
     } 
     System.out.println(); 

    } 

    private static void counting() { 
     for (int i = 0; i < a.length; i++) { 
      for (int k = 0; k < a.length; k++) { 
       if (a[i] == a[k]) { 
        b[i] = ++count; 
       } 
      } 
      count = 0; 
     } 

    } 
} 
関連する問題