Estoy haciendo un pequeño programa como tarea de instituto.
Al ejecutar el programa me da este error:
Exception in thread "main" java.lang.NullPointerException at Instituto1.asignarAsignatura(Instituto1.java:103) at Programa.main(Programa.java:26)
Os dejo el código para que podáis ver el fallo.
Programa principal:
public class Programa {
public static void main(String[] args) {
Instituto ins1 = new Instituto1("Instituto 1");
//Crear Curso
ins1.crearCurso("01", "DAM");
//Crear Asignatura
ins1.crearAsignatura("M2", "Base de Dades", 6, "10");
ins1.asignarAsignatura("01", "M2");
}
}
Instituto1:
public class Instituto1 implements Instituto {
//VARIABLES
String nombre;
private Profesor[] profesor;
private Alumno[] alumno;
private Curso[] curso;
private Asignatura[] asignatura;
private Profesor1[] profesor1;
private Alumno1[] alumno1;
private int nProfesor;
private int nAlumnos;
private int nCursos;
private int nAsignaturas;
//CONSTRUCTORES
public Instituto1(String nombre){
this.nombre = nombre;
this.profesor = new Profesor[10];
this.alumno = new Alumno[10];
this.curso = new Curso[10];
this.asignatura = new Asignatura[10];
this.nProfesor = 0;
this.nAlumnos = 0;
this.nCursos = 0;
this.nAsignaturas = 0;
}
//SETs
//GETs
//Operaciones
public void crearProfesor(String nombre, String dni) {
this.profesor[this.nProfesor] = new Profesor1(nombre,dni);
this.nProfesor ++;
System.out.println("Profesor Creado");
}
public void crearAlumno(String nombre, String dni) {
this.alumno[this.nAlumnos] = new Alumno1(nombre,dni);
this.nAlumnos ++;
System.out.println("Alumno Creado");
}
public void crearCurso(String codigo, String nombre) {
this.curso[this.nCursos] = new Curso(codigo, nombre);
this.nCursos ++;
System.out.println("Curso Creado");
}
public void crearAsignatura(String codigo, String nombre, int horasSemanales, String aula) {
this.asignatura[this.nAsignaturas] = new Asignatura(codigo,nombre,horasSemanales, aula);
this.nAsignaturas ++;
System.out.println("Asignatura Creada");
}
public Profesor getProfesor(String dni){
int i = 0;
while(this.profesor[i].getDni().equalsIgnoreCase(dni)){
i++;
}
System.out.print("Profesor Encontrado");
return profesor[i];
}
public Alumno getAlumno(String dni) {
int i = 0;
while(this.alumno[i].getDni().equalsIgnoreCase(dni)){
i++;
}
System.out.print("Alumno Encontrado");
return alumno[i];
}
public void asignarAsignatura(String codigoCurso, String codigoAsignatura) {
int i = 0;
int j = 0;
while(this.curso[i].getCodigoCurso().equalsIgnoreCase(codigoCurso)){
i ++;
}
while(this.asignatura[j].getCodigoAsignatura().equalsIgnoreCase(codigoAsignatura)){
j ++;
}
this.curso[i].asignarAsignatura(this.asignatura[j]);
System.out.print("Asignatura Asignada");
}
public void asignarProfesor(String codigoAsignatura, String dni) {
//int i = 0;
//int j = 0;
//while(this.asignatura[i].getCodigoAsignatura().equalsIgnoreCase(codigoAsignatura)) {
// i ++;
//}
//while(this.profesor1[j].getDni().equalsIgnoreCase(dni)) {
// j ++;
//}
//this.profesor1[j].asignarProfesor(this.asignatura[i]);
//System.out.print("Profesor Asignado");
}
public void asignarAlumno(String codigoCurso, String dni) {
//int i = 0;
//int j = 0;
//while(this.curso[i].getCodigoCurso().equalsIgnoreCase(codigoCurso)) {
// i++;
//}
//while(this.alumno[j].getDni().equalsIgnoreCase(dni)) {
// j++;
//}
// this.alumno1[j].asignarAlumno(this.curso[i]);
}
public String informeAsignatura(String codigoAsignatura) {
//int i = 0;
//while(this.asignatura[i].getCodigoAsignatura().equalsIgnoreCase(codigoAsignatura)) {
// i++;
//}
// TODO Auto-generated method stub
return null;
}
public String verAula(String codigoAsignatura) {
// TODO Auto-generated method stub
return null;
}
public String verAulaAsignatura(String aula) {
// TODO Auto-generated method stub
return null;
}
public String verAlumnosCurso(String codigoCurso) {
// TODO Auto-generated method stub
return null;
}
//toString
public String toString(){
String s="";
s+= "El nombre del Instituto es: "+this.nombre;
return s;
}
}
Curso:
public class Curso {
//VARIABLES
String codigo;
String nombre;
Asignatura[] asignaturas;
int contAsignaturas;
//CONSTRUCTOR
public Curso(String codigo, String nombre){
this.codigo = codigo;
this.nombre = nombre;
this.contAsignaturas = 0;
}
//SETs
public void setNombre(String nombre){
this.nombre = nombre;
}
public void setCodigoCurso(String codigo){
this.codigo = codigo;
}
//GETs
public String getNombreCurso(){
return this.nombre;
}
public String getCodigoCurso(){
return this.codigo;
}
//OPERACIONES
public void asignarAsignatura(Asignatura a){
this.asignaturas[this.contAsignaturas] = a;
this.contAsignaturas ++;
}
//toString
public String toString(){
String s="";
s+= "El nombre del CURSO es: "+this.nombre;
s+= "y el codigo es: "+this.codigo;
return s;
}
}
Asignatura:
public class Asignatura {
//VARIABLES
String codigo;
String nombre;
int horasSemanales;
String aula;
//CONSTRUCTOR
public Asignatura(String codigo, String nombre, int horasSemanales, String aula){
this.codigo = codigo;
this.nombre = nombre;
this.horasSemanales = horasSemanales;
this.aula = aula;
}
//GETs
public String getNombreAsignatura(){
return this.nombre;
}
public String getCodigoAsignatura(){
return this.codigo;
}
public int getHorasSemanales(){
return this.horasSemanales;
}
public String getAula(){
return this.aula;
}
//SETs
public void setNombre(String nombre){
this.nombre = nombre;
}
public void setCodigoCurso(String codigo){
this.codigo = codigo;
}
//OPERACIONES
//toString
public String toString(){
String s="";
s+= "El nombre del CURSO es: "+this.nombre;
s+= "y el codigo es: "+this.codigo;
return s;
}
}
Alumno1:
public class Alumno1 extends Persona implements Alumno {
//VARIABLES
Asignatura[] asignaturas;
int contAsignaturas3;
Curso[] curso;
int contCursos;
//CONSTRUCTORES
public Alumno1(String nombre, String dni){
super(nombre,dni);
this.contAsignaturas3 = 0;
this.contCursos = 0;
}
//SETs
public void setNombre(String nombre){
this.nombre = nombre;
}
public void setDni(String dni){
this.dni = dni;
}
//GETs
//OPERACIONES
public String verAsignaturas() {
// TODO Auto-generated method stub
return null;
}
public double verNotaAsignatura(String codigoAsignatura) {
// TODO Auto-generated method stub
return 0;
}
public String verInforme() {
// TODO Auto-generated method stub
return null;
}
public void asignarAlumno(Curso C) {
this.curso[this.contCursos] = C;
this.contCursos++;
}
//toString
public String toString(){
String s="";
s+= "El nombre del Alumno es: "+this.nombre;
s+= " y su DNI es "+this.dni;
return s;
}
}
Profesor:
public class Profesor1 extends Persona implements Profesor {
//VARIABLES
Asignatura[] asignaturas;
int contAsignaturas2;
//CONSTRUCTORES
public Profesor1(String nombre, String dni){
super(nombre,dni);
this.contAsignaturas2 = 0;
}
//SETs
public void setNombre(String nombre){
this.nombre = nombre;
}
public void setDni(String dni){
this.dni = dni;
}
//GETs
//OPERACIONES
public void ponerNota(String codigoAsignatura, String dni, double nota) {
// TODO Auto-generated method stub
}
public String verAsignaturas() {
// TODO Auto-generated method stub
return null;
}
public int verHoras() {
// TODO Auto-generated method stub
return 0;
}
public void asignarProfesor(Asignatura B) {
this.asignaturas[this.contAsignaturas2] = B;
this.contAsignaturas2 ++;
}
//toString
public String toString(){
String s="";
s+= "El nombre del Profesor es: "+this.nombre;
s+= " y su DNI es "+this.dni;
return s;
}
}
Interface:
Instituto:
public interface Instituto {
/**
* Crea un profesor para el instituto
* @param nombre Nombre del profesor
* @param dni DNI del profesor
*/
public void crearProfesor(String nombre, String dni);
/**
* Crea un alumno para el instituto
* @param nombre Nombre del alumno
* @param dni DNI del alumno
*/
public void crearAlumno(String nombre, String dni);
/**
* Crea un curso
* @param codigo Codigo del curso
* @param nombre Nombre del curso
*/
public void crearCurso(String codigo, String nombre);
/**
* Crea una asignatura.
* @param codigo Codigo de la asignatura.
* @param nombre Nombre de la asignatura.
* @param horasSemanales Numero de horas de la asignatura a la semana.
* @param aula Nombre del aula donde se imparte la asignatura.
*/
public void crearAsignatura(String codigo, String nombre, int horasSemanales, String aula);
/**
* Accede al profesor con el dni especifico
* @param dni DNI del profesor a buscar
* @return Objeto tipo Profesor
*/
public Profesor getProfesor(String dni);
/**
* Accede al alumno con el dni especifico
* @param dni DNI del alumno a buscar
* @return Objeto tipo Alumno
*/
public Alumno getAlumno(String dni);
/**
* Asigna una asignatura a un curso
* @param codigoCurso Codigo del curso donde se asignar� la asignatura.
* @param codigoAsignatura Codigo de la asignatura que se asignar� al curso.
*/
public void asignarAsignatura(String codigoCurso, String codigoAsignatura);
/**
* Asigna un profesor a una asignatura.
* @param codigoAsignatura Codigo de la asignatura a la que se asignar� el profesor.
* @param dni DNI del profesor que se asignar� a la asignatura.
*/
public void asignarProfesor(String codigoAsignatura, String dni);
/**
* Asigna un alumno a un curso.
* @param codigoCurso Codigo del curso donde se asignar� el alumno.
* @param dni DNI del alumno que se asignar� al curso.
*/
public void asignarAlumno(String codigoCurso, String dni);
/**
* Pedimos una asignatura y nos da el informe con:
* - Numero de estudiantes matriculados,
* - Numero de estudiantes evaluados (con nota introducida)
* - Numero y porcentaje de estudiantes aprobados (respecto a los evaluados)
* - Numero y porcentaje de estudiantes suspendidos (respecto a los evaluados)
* - Nota media de la asignatura (respecto a los evaluados)
* @param codigoAsignatura Codigo de la asignatura a estudiar.
* @return String con el informe de la asignatura.
*/
public String informeAsignatura(String codigoAsignatura);
/**
* Muestra en que aula se da una asignatura
* @param codigoAsignatura Codigo de la asignatura a estudiar.
* @return String con el aula de la asignatura.
*/
public String verAula(String codigoAsignatura);
/**
* Muestra que asignaturas se dan en un aula
* @param aula Nombre del aula
* @return String con la lista de asignaturas que se dan en ese aula.
*/
public String verAulaAsignatura(String aula);
/**
* Muestra que alumnos est‡n matriculados en un curso
* @param codigoCurso Codigo del curso a estudiar
* @return String con la lista de alumnos que cursan ese curso.
*/
public String verAlumnosCurso(String codigoCurso);
}
Profesor:
public interface Profesor {
/**
* Coloca una nota a un alumnos en una asignatura que el profesor imparte
* @param codigoAsignatura Codigo de la asignatura a evaluar.
* @param dni DNI del alumno a evaluar.
* @param nota Double con la nota del alumno en la asignatura.
*/
public void ponerNota(String codigoAsignatura, String dni, double nota);
/**
* Muestra el nombre y el aula de las asignaturas asignadas a un profesor.
* @return String con la lista de parejas de asignatura-aula
*/
public String verAsignaturas();
/**
* Muestra el numero de horas que da el profesor a la semana. Es la suma de todas las asignaturas.
* @return Numero total de horas semanales asignadas al profesor.
*/
public int verHoras();
/**
* GET DNI del Profesor.
* @return DNI del Profesor.
*/
public String getDni();
public String getNombre();
}
Alumno:
public interface Alumno {
/**
* Muestra el nombre de las asignaturas matriculadas por el alumno.
* @return String con la lista de asignaturas.
*/
public String verAsignaturas();
/**
* Muestra la nota de un alumno para una asignatura.
* @param codigoAsignatura String con el codigo de la asignatura.
* @return Nota asignada al alumno en la asignatura.
*/
public double verNotaAsignatura(String codigoAsignatura);
/**
* Muestra la informacion de un alumno:
* - Asignaturas matriculadas
* - Nota de cada asignatura (NP - en las no evaluadas)
* - Si esta todo evaluado y aprobado :
* - Nota media de todas las asignaturas
* - Si no esta todo aprobado o evaluado :
* - Lista de asignaturas a repetir
* @return String con la informaci�n del alumno.
*/
public String verInforme();
/**
* GET DNI del Alumno.
* @return DNI del Alumno.
*/
public String getDni();
public String getNombre();
}
Clase Alumno:
public class Persona {
//VARIABLES
String nombre;
String dni;
//CONSTRUCTORES
public Persona(String nombre, String dni){
this.nombre = nombre;
this.dni = dni;
}
//SETs
public void setNombre(String nombre){
this.nombre = nombre;
}
public void setDni(String dni){
this.dni = dni;
}
//GETs
public String getNombre(){
return this.nombre;
}
public String getDni(){
return this.dni;
}
//Operaciones
//toString
}
Gracias de antemano.