0

JTextFieldオブジェクトの大きな配列を作成しようとしていますが、何らかの理由でコードがコンパイルされません。私はこれを長い間試してきましたが、コンパイラが怒っている正当な理由を見つけることができません。これが長さ2の配列だけの私のコードです:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class SUDOKU_temp extends JApplet
{
    //declare fields

    public JTextField[] fields = new JTextField[2];
    fields[0] = new JTextField();
    fields[1] = new JTextField();

    //other stuff happens down here that the compiler is ok with
}

長さ1の配列でのみコードを実行すると、まったく同じエラーが発生します。これは次のとおりです。

linux63:~demo$ ./compile
SUDOKU_temp.java:11: ']' expected
    fields[0] = new JTextField();
           ^
SUDOKU_temp.java:11: ';' expected
    fields[0] = new JTextField();
            ^
SUDOKU_temp.java:11: illegal start of type
    fields[0] = new JTextField();
              ^
SUDOKU_temp.java:11: <identifier> expected
    fields[0] = new JTextField();
               ^
SUDOKU_temp.java:11: ';' expected
    fields[0] = new JTextField();
                   ^
SUDOKU_temp.java:11: illegal start of type
    fields[0] = new JTextField();
                              ^
SUDOKU_temp.java:11: <identifier> expected
    fields[0] = new JTextField();
                               ^

これはコードではなくコンパイラの問題だと思います。これをデバッグする方法についてのヘルプは大歓迎です。前もって感謝します!!

4

3 に答える 3

5

非宣言ステートメントをクラスブロックに配置することはできません。あなたが配置する必要があります

fields[0] = new JTextField();
fields[1] = new JTextField();

コンストラクター、メソッド、または静的初期化ブロック内。このアプレットには、次のものを使用できます。

public void init() {
   for (int i=0; i < fields.length; i++ ) {
      fields[i] = new JTextField();
   }
}
于 2013-01-17T22:16:03.230 に答える
5

メソッドの外部でコードを実行することはできません(宣言でない限り)。何らかの方法で、または配列リテラルを使用してそれらを初期化する必要があります。

配列リテラル:

public JTextField[] fields ={ new JTextField(),new JTextField()};

メソッド内:

public JTextField[] fields=new JTextField[2];
public void method(){
    fields[0]=new JTextField();
    fields[1]=new JTextField();
}
于 2013-01-17T22:16:15.183 に答える
3

上記に追加するには、次のように宣言時に配列内のオブジェクトを初期化できます。

public class SUDOKU_temp {

  private JTextField[] fields = {new JTextField(), new JTextField()};
于 2013-01-17T22:20:26.893 に答える