[ Foro de Java ]
Hola, tengo una clase Principal (clase main) y una clase Alumno (clase objeto), donde Alumno tiene como atributos: Nombre, Matricula y numero de Grupo.
Hice el constructor vacío y los get y set de cada atributo.
Ahora lo que he querido intentar es instanciar de forma automática el objeto Alumno usando Arrays, esto lo hago para no tener que instanciar 50 veces el objeto Alumno con diferentes nombres en la instancia, por ejemplo:
- Alumno nuevo1 = new Alumno();
- Alumno nuevo2 = new Alumno();
- Alumno nuevo3 = new... y asi hasta llegar a la cantidad que queramos.
Eso no seria muy eficiente por lo que pensé una mejor manera de hacerlo, utilizando Arrays, seria asi:
Alumno nuevo [ ] = new Alumno [ cantidad que quieras ];
El problema es que al establecer un atributo en cualquier posición de este Array me tira un java.lang.NullPointerException.
Les dejo el código de ejemplo aquí abajo:
CLASE MAIN
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
Alumno alumno [] = new Alumno [3];
alumno[0].setNombre(input.nextLine());
System.out.println(alumno[0].getNombre());
}
}
CLASE OBJETO
public class Alumno {
private String nombre;
private int matricula;
private char numGrupo;
public Alumno(){
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getMatricula() {
return matricula;
}
public void setMatricula(int matricula) {
this.matricula = matricula;
}
public char getNumGrupo() {
return numGrupo;
}
public void setNumGrupo(char numGrupo) {
this.numGrupo = numGrupo;
}
}
Agradezco su respuesta, espero que puedan ayudarme
Cuando creas un array de objetos, necesitas dos "new": uno para el array y otro para inicializar cada objeto. En tu fuente, haces
alumno[0].setNombre(input.nextLine());
pero te falta antes un
alumno[0] = new Alumno();
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)