Java JTextField数组赢得';不编译

Java JTextField数组赢得';不编译,java,swing,compiler-errors,jtextfield,Java,Swing,Compiler Errors,Jtextfield,我正试图创建一个大型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对象数组,由于某种原因,我的代码无法编译。我已经玩弄它太久了,我找不到任何好的理由让编译器生气;以下是我仅使用长度为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();
                               ^
linux63:~demo$。/compile
SUDOKU_temp.java:11:']'应为
字段[0]=新的JTextField();
^
数独游戏:11:“;”预期
字段[0]=新的JTextField();
^
SUDOKU_temp.java:11:类型的非法开始
字段[0]=新的JTextField();
^
SUDOKU_temp.java:11:应为
字段[0]=新的JTextField();
^
数独游戏:11:“;”预期
字段[0]=新的JTextField();
^
SUDOKU_temp.java:11:类型的非法开始
字段[0]=新的JTextField();
^
SUDOKU_temp.java:11:应为
字段[0]=新的JTextField();
^

我觉得这是编译器的问题,而不是代码的问题,任何关于如何调试的帮助都将不胜感激。提前谢谢

在类块中找不到非声明性语句。你需要一个地方

fields[0] = new JTextField();
fields[1] = new JTextField();
在构造函数、方法或静态初始值设定项块中。对于此小程序,您可以使用:

public void init() {
   for (int i=0; i < fields.length; i++ ) {
      fields[i] = new JTextField();
   }
}
public void init(){
for(int i=0;i
不能在方法外运行代码(除非是声明)。您需要用某种方法或使用数组文本初始化它们

数组文字:

public JTextField[] fields ={ new JTextField(),new JTextField()};
在方法中:

public JTextField[] fields=new JTextField[2];
public void method(){
    fields[0]=new JTextField();
    fields[1]=new JTextField();
}

除此之外,您还可以在声明时初始化数组中的对象,如下所示:

public class SUDOKU_temp {

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

这根本不是编译器的错。这是代码错误。非常感谢你!我对Java有点生疏,这是我现在不会忘记的一课。