Java 创建类的新对象后获取NPE

Java 创建类的新对象后获取NPE,java,swing,Java,Swing,我正试图用swing做一个“游戏”,但我遇到了一个无法解决的问题。这可能是一件简单而明显的事情,但我还是不明白。这是我的一段代码: public class LevelOne { private static Crate[] crates = new Crate[3]; public LevelOne(){ crates[0].setX(200); crates[0].setY(200); crates[1].setX(280); crates[

我正试图用swing做一个“游戏”,但我遇到了一个无法解决的问题。这可能是一件简单而明显的事情,但我还是不明白。这是我的一段代码:

public class LevelOne {

private static Crate[] crates = new Crate[3];        
public LevelOne(){
    crates[0].setX(200);
    crates[0].setY(200);
    crates[1].setX(280);
    crates[1].setY(40);
    crates[2].setX(440);
    crates[2].setY(40);

}
//more code here
}
我尝试创建
LevelOne
类的对象,使我的
板条箱
变活。(这是一种方式吗?)

这给了我一个NPE

LevelOne l = new LevelOne();

正如我所说,这是一个小项目,但我认为这可能解决整个问题。我用这个
板条箱[]
板条箱在我的板上画组件,检查碰撞和其他东西。如果不创建
LevelOne
类的对象,我在尝试绘制它们时仍然会得到NPE。有什么建议、想法和解决方案吗?

您必须将
板条箱
对象传播到
板条箱
数组中。您得到的是NullPointerException,因为
crates
数组中没有任何
Carte
的引用。执行以下操作

private static Crate[] crates = new Crate[3];        
public LevelOne(){
    for(int i = 0; i < crates.length; i++)
        crates[i] = new Crate();
    crates[0].setX(200);
    crates[0].setY(200);
    crates[1].setX(280);
    crates[1].setY(40);
    crates[2].setX(440);
    crates[2].setY(40);

}
专用静态板条箱[]板条箱=新板条箱[3];
公共一级(){
对于(int i=0;i
您必须将
板条箱
对象传播到
板条箱
数组中。您得到的是NullPointerException,因为
crates
数组中没有任何
Carte
的引用。执行以下操作

private static Crate[] crates = new Crate[3];        
public LevelOne(){
    for(int i = 0; i < crates.length; i++)
        crates[i] = new Crate();
    crates[0].setX(200);
    crates[0].setY(200);
    crates[1].setX(280);
    crates[1].setY(40);
    crates[2].setX(440);
    crates[2].setY(40);

}
专用静态板条箱[]板条箱=新板条箱[3];
公共一级(){
对于(int i=0;i
您忘记初始化板条箱中的元件:

private static Crate[] crates = new Crate[3];        

public LevelOne(){
    crates[0] = new Crate(); // <= add this
    crates[0].setX(200);
    crates[0].setY(200);
    // same for other elements
专用静态板条箱[]板条箱=新板条箱[3];
公共一级(){

板条箱[0]=新板条箱();//您忘记初始化板条箱中的元素:

private static Crate[] crates = new Crate[3];        

public LevelOne(){
    crates[0] = new Crate(); // <= add this
    crates[0].setX(200);
    crates[0].setY(200);
    // same for other elements
专用静态板条箱[]板条箱=新板条箱[3];
公共一级(){

板条箱[0]=新板条箱();//这会使所有的板条箱成为同一个物体,不是吗?你不认为这是可能的吗problematic@RC至于OP的代码,我看不到任何问题……但是如果不同的构造函数可能会有问题,或者如果他只想将对象传播到数组索引的某些部分,则可能会有问题。@RC marvelous catch…更改了答案。我不认为正确。这会使所有的板条箱成为同一个物体,不是吗?你不认为这是可能的吗problematic@RC就OP的代码而言,我看不到任何问题……但是如果不同的构造函数可能会有问题,或者如果他只想将对象传播到数组索引的某些部分,则可能会有问题。@RC marvelous catch…更改了答案。我不是正确使用墨水。若要更快获得更好的帮助,请发布一个。若要更快获得更好的帮助,请发布一个。