1

次のエラーで問題が発生しました。

トークン";"の構文エラー、{このトークンの後に予想される
構文エラー、"}"を挿入してEnumBodyを完了します

public enum ImpNoise {
  INSTANCE;

   private int p[] = new int[512];


   for(int i = 0; i < 256; i++) {

   }

}

上記のように、クラス全体を最小限に抑えました。forループが問題の原因であることがわかりました。しかし、私は本当にそれを理解していません、それは大丈夫に見えますか?

4

5 に答える 5

5

メソッドコンストラクター、またはコードブロックの外部で、クラスfor本体にステートメント(またはその他のステートメント)を配置することはできません。クラスの作成時にコードを実行する場合は、コードをコンストラクターに配置します。

public enum ImpNoise {
  INSTANCE;

  private int p[] = new int[512];

  private ImpNoise() {
    for(int i = 0; i < 256; i++) {

    }
  }
}

参照:

于 2012-09-10T09:09:10.673 に答える
1

コードをコードブロックに配置する必要があります。これを回避できるのは、フィールドのイニシャライザーのみです。

あなたが意図したのは

public enum ImpNoise {
   INSTANCE;

   private final int[] p = new int[512];

   // either
   {
       for(int i = 0; i < 256; i++) {

       }
   }
   // or
   private ImpNoise() {
       for(int i = 0; i < 256; i++) {

       }
   }
}
于 2012-09-10T09:13:08.410 に答える
1

ループはメソッドに属している必要がありますが、そうではありません。

于 2012-09-10T09:09:18.333 に答える
0

Java列挙型は、メソッドの記述、インターフェースの実装などを可能にする本格的なクラスです。ただし、このようなコードを記述しないでください:)

列挙型について詳しくは、こちらをご覧ください

于 2012-09-10T09:13:26.693 に答える
0

forループをメソッドまたはコンストラクター内に配置することをお勧めします。

于 2012-09-10T09:10:02.763 に答える