获取异常:“AWT-EventQueue-0”java.lang.NullPointerException

时间:2012-05-31 14:19:24

标签: java arrays string

我收到以下异常

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Java.CompileFile.doCompilation(CompileFile.java:48)
at GUI.CompilerForm.compileBtnActionPerformed(CompilerForm.java:225)
at GUI.CompilerForm.access$400(CompilerForm.java:23)
............

我没有错误是在CompileFile.java的第48行,它说的是NULL中的数组,我不知道为什么,因为这是我添加字符串的地方!

String[] compile;
int numberOfErrors = 0;
.
.
.
 for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {                
            String errors = diagnostic.getKind().toString()+" on line  "+ diagnostic.getLineNumber() +"\nIn file:  \n"+ diagnostic.toString();
            compile[numberOfErrors] = errors;
            numberOfErrors++;
        }

我设置它后我已经尝试了System.out.println(errors);并且它工作正常所以我真的不知道发生了什么!

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

你已经声明了一个名为compile的变量,但你没有在任何地方显示它被赋予一个值。假设它是一个实例变量,其值将默认为null。您需要使用以下命令对其进行初始化:

compile = new String[someSize];

其中someSize“足够大”。

或者,您最好使用列表:

// TODO: Rename variable to something more sensible
private final List<String> compile = new ArrayList<String>();

...然后

compile.add(errors);

然后你也可以摆脱numberOfErrors,因为那可能只是compile.size()

答案 1 :(得分:1)

在您显示的代码快照中,您似乎没有初始化compile,因此默认情况下它已初始化为null

您应明确创建String[]并将其分配给compile

compile = new String[MY_SIZE];

如果您尝试追加错误,可能需要考虑使用dynamic array - 在java中使用ArrayList<String>,并使用ArrayList.add(element)附加元素

答案 2 :(得分:1)

我猜你没有初始化数组(正确)

String[] compiled = new String[size];

或者您没有设置适当的数组大小

如果您无法预测数组中有多少项。使用列表(例如ArrayList)代替

 List<String> compiled = new ArrayList<String>();

Arraylists 没有大小限制。

添加项目

 compiled.add(item);

答案 3 :(得分:0)

看起来你还没有初始化你的数组。

尝试这样的事情:

compile = new String[numberOfErrors];

然后将错误存储在数组中。