Java 使用数组作为属性来修改它

Java 使用数组作为属性来修改它,java,Java,我的朋友用java编写了一个突破游戏。我知道C++,它相对java很好。< /P> 我在尝试插入多球砖块时遇到问题 以下是我的函数的相关部分: private Balle[] balle; public BriqueMultiBalle(Balle[] bal) { super(); balle = bal; SCORE = 100; } public void touched() { visible = false;

我的朋友用java编写了一个突破游戏。我知道C++,它相对java很好。< /P> 我在尝试插入多球砖块时遇到问题

以下是我的函数的相关部分:

private Balle[] balle;
public BriqueMultiBalle(Balle[] bal) {
        super();
        balle = bal;
        SCORE = 100;
    }
public void touched() {
        visible = false;
        balle[Balle.getNInstance()].makeVisible();
    }
我没有收到任何错误,但在调试时发现balle对应于空指针。我尝试使用这些不同的声明,但是没有一个有效:

一,

但是,这些方法不起作用

谢谢


Ghi102

您在balle上得到一个空指针,因为您从未初始化数组,所以将其保留为空

private Balle[] balle;
尝试初始化您的代码

balle = new Balle[bal.length];
for(int i = 0; i < bal.length; i++){
        balle[i] = bal[i];
}
下面是我使用int数组编写的一个示例。同样的概念,只需将其应用于对象

public static void main(String[] args) throws Exception {

    int[] arrayInts;
    int[] originalInts = { 1, 2, 3, 4, 5 };

    arrayInts = new int[originalInts.length];

    for(int i = 0; i < originalInts.length; i++){
        arrayInts[i] = originalInts[i];
    }

    originalInts[0] = 10;
    for (int i : arrayInts) {
        System.out.println(i);
    }
}

您正在调用哪个构造函数,默认构造函数,还是传递Balle[]的构造函数?如果是后者,您确定要传递一个初始化的Balle[]?如何创建要传递给构造函数的Balle[]?也许你可以告诉我们你在哪里做这件事的代码?
balle = new Balle[bal.length];
for(int i = 0; i < bal.length; i++){
        balle[i] = bal[i];
}
public static void main(String[] args) throws Exception {

    int[] arrayInts;
    int[] originalInts = { 1, 2, 3, 4, 5 };

    arrayInts = new int[originalInts.length];

    for(int i = 0; i < originalInts.length; i++){
        arrayInts[i] = originalInts[i];
    }

    originalInts[0] = 10;
    for (int i : arrayInts) {
        System.out.println(i);
    }
}