2014-06-20 16 views
0

我的朋友在java中编写了一个Breakout游戏。我知道C++,它可以很好地转移到Java。使用数组作为属性来修改它Java

我在尝试插入MultiBall砖时遇到问题。

这里是我的功能培训相关位:

private Balle[] balle; 
public BriqueMultiBalle(Balle[] bal) { 
     super(); 
     balle = bal; 
     SCORE = 100; 
    } 
public void touched() { 
     visible = false; 
     balle[Balle.getNInstance()].makeVisible(); 
    } 

我没有得到任何错误,但我发现调试巴勒对应一个空指针时。我试着用这些不同的声明,但是,他们没有工作:

1.

public BriqueMultiBalle(Balle[] bal) { 
       super(); 
       for(int i = 0; i < 6; i++) 
        { 
         balle[i] = bal[i]; 
        } 
       SCORE = 100; 
      } 

2.

public BriqueMultiBalle(Balle[] bal) { 
      super(); 
      balle = new Balle[](bal); 
      SCORE = 100; 
     } 

然而,这些方法不起作用。

感谢,

Ghi102

+1

你在调用哪个构造函数,默认值,还是你在'Balle []'中传入的构造函数?如果是后者,你确定你传入了一个初始化的'Balle []'? –

+0

你是如何创建你传递给构造函数的'Balle []'的?也许你可以向我们展示代码在哪里做到这一点? –

回答

0

你得到的巴勒空指针,因为你从来没有初始化数组,你把它作为

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); 
    } 
}