2014-06-20 3 views
0

mon ami a programmé un jeu Breakout en Java. Je connais le C++, qui se transfère relativement bien à Java.Utiliser un tableau comme attribut pour le modifier Java

J'ai rencontré un problème en essayant d'insérer une brique MultiBall.

Voici les bits relevent de ma fonction:

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

je reçois pas d'erreur, mais j'ai découvert lors du débogage qui correspond à balle un pointeur NULL. J'ai essayé d'utiliser ces déclarations différentes, cependant, aucun d'entre eux a travaillé:

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

Cependant, ces méthodes ne fonctionnent pas.

Merci,

Ghi102

+1

Quel constructeur appelez-vous, la valeur par défaut, ou celui où vous passez dans un 'Balle []'? Si c'est le cas, êtes-vous sûr de passer dans un 'Balle []' initialisé? –

+0

Comment créez-vous le 'Balle []' que vous passez au constructeur? Peut-être que vous pouvez nous montrer le code où vous faites cela? –

Répondre

0

Vous obtenez un pointeur NULL sur balle parce que vous initialisez jamais le tableau, vous laisser comme

private Balle[] balle; 

Essayez de vous initialiser le code

balle = new Balle[bal.length]; 
for(int i = 0; i < bal.length; i++){ 
     balle[i] = bal[i]; 
} 

Voici un exemple que j'ai écrit en utilisant un tableau int. Même concept, il suffit de l'appliquer à votre objet.

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