2011-10-07 10 views
5

Soy bastante nuevo en Java y me está resultando difícil descifrar cómo solucionar esta excepción de puntero nulo que me ha estado preocupando.¿Las matrices de objetos Java pueden inicializar elementos como valores no nulos?

Sé dónde ocurre el problema y sé qué es una excepción de puntero nulo, pero no tengo idea de cómo voy a hacer que mi programa funcione.

He aquí el fragmento de código en el que el problema se está produciendo:

public static void main(String[] args) { 
Scanner input = new Scanner(System.in); 

    Account[] atm = new Account[10]; 

    for (int i = 0; i < 10; i++){ 
     atm[i].setId(i); 
     atm[i].setBalance(100.00); 
    } 

Como he dicho, sé que sucede porque los objetos en atm [] son ​​nulos, pero no estoy seguro de cómo solucionar el problema.

Estoy seguro de que es un error tonto porque esos son los tipos de errores que cometo regularmente, pero cualquier ayuda que ustedes puedan dar me alegraría el día.

Gracias!

Respuesta

8

¡Toda su matriz es nula! recuerde, las matrices nunca se inicializan automáticamente en Java, a menos que sean matrices de ints, floats, dobles o booleanos.

Scanner input = new Scanner//System.in.Scanner; 

Account[] atm = new Account[10]; 

for (int i = 0; i < 10; i++){ 
    **atm[i] = new Account();** 
    atm[i].setId(i); 
    atm[i].setBalance(100.00); 
} 

cuando estás declarar arrays que contienen objetos, leerlo como, "Estoy creando una matriz que contendrá objetos 'x'." (Correcto), y luego proceder a instancia de los objetos

... en lugar de ...

"Estoy creando una matriz con los objetos 'x' en el mismo." (incorrecto) ya que todavía no hay objetos porque no se han creado.

+2

O, quizás una mejor manera de pensarlo: las matrices * siempre * se inicializan por defecto en Java, y el inicializador es siempre el equivalente a 0-relleno: 0, 0.0, 'falso',' nulo', etc. . –

+0

¡Muchas gracias! Como esta es la primera práctica con matrices de Java que he tenido, ¡no estaba al tanto de ese pequeño bocado! No dejaré que vuelva a suceder =) – KAM1KAZEKOALA

Cuestiones relacionadas