Salve ragazzi ho creato un progetto il cui testo chiedeva di implementare l'iscrizione e registrazione a corsi universitari.
Purtroppo nel metodo main non tutto va a buon fine, mi trovo con eccezioni del tipo null pointer exception quindi oggetto che non è stato creato.
Non so più dove sbattere la testa quindi chiedo aiuto a voi.
Ho fatto la classe studente
package progetto_univ;
public class Studente {
private String nome;
private String cognome;
private String matricola;
private Corso corsi[];
private int []voti;
private int numeroCorsi;
public Studente(String nome, String cognome, String matricola) {
//incamerate da esterno
this.nome = nome;
this.cognome = cognome;
this.matricola = matricola;
//inizializzate da costruttore
corsi=new Corso[50];
voti=new int[50];
numeroCorsi=0;
}
public void iscrivi(Corso c){
corsi[numeroCorsi]=c;
numeroCorsi++;
c.iscrizione(this);
//this è riferimento all'oggetto stesso cioè all'oggetto studente
//ho fatto l'inscrizione anche nell'array dei corsi
}
public void registraVoto(Corso c, int voto){
for(int i=0;i<numeroCorsi;i++){
if(corsi[i]==c){
voti[i]=voto;
}
}
}
public String toString(){
String s= nome+" "+cognome+" "+matricola+" iscritto a "+numeroCorsi+" corsi";
if(numeroCorsi>0){
for(int i=0;i<numeroCorsi;i++){
s=s+"\n-"+corsi[i].getNome()+" con docente "+corsi[i].getDocente()+"."+" Voto: "+voti[i];
}
}
return s;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public String getMatricola() {
return matricola;
}
public void setMatricola(String matricola) {
this.matricola = matricola;
}
public int getNumeroCorsi() {
return numeroCorsi;
}
public void setNumeroCorsi(int numeroCorsi) {
this.numeroCorsi = numeroCorsi;
}
public double media(){
double sommaVoti=0;
double contaVoti=0;
for(int i=0;i<numeroCorsi;i++){
if(voti[i]>0){
sommaVoti+=voti[i];
contaVoti++;
}
}
return sommaVoti/contaVoti;
}
public int getVoto(Corso c){
//voto che studente ha preso in un certo corso.
//scorro tutti i corsi e se trovo uguaglianza restituisco il corso
for(int i=0;i<numeroCorsi;i++){
if(corsi[i]==c){
return voti[i];
}
}
return 0; //studente non iscritto al corso
}
public Corso[] getCorsi() {
return corsi;
}
public void setCorsi(Corso[] corsi) {
this.corsi = corsi;
}
public int[] getVoti() {
return voti;
}
public void setVoti(int[] voti) {
this.voti = voti;
}
}
Poi la classe corso
package progetto_univ;
public class Corso {
private String nome;
private String docente;
private Studente[] iscritti;
private int numeroIscritti;
public Corso(String nome, String docente) {
this.nome = nome;
this.docente = docente;
iscritti=new Studente[100];
numeroIscritti=0;
}
@Override
public String toString() {
String s= "Il corso:" + nome + " ha iscritti "+numeroIscritti+" studenti "+"con il docente:" + docente;
if(numeroIscritti>0){
for(int i=0;i<numeroIscritti;i++){
s=s+"\n-"+iscritti[i].getNome()+" "+iscritti[i].getCognome();
}
}
return s;
}
public void iscrizione(Studente s){
iscritti[numeroIscritti]=s;
numeroIscritti++;
}
public String getNome() {
return nome;
}
public String getDocente() {
return docente;
}
public int getNumeroIscritti() {
return numeroIscritti;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setDocente(String docente) {
this.docente = docente;
}
public void setNumeroIscritti(int numeroIscritti) {
this.numeroIscritti = numeroIscritti;
}
public double media(){
int sommaVoti=0;
int contaVoti=0;
for(int i=0;i<numeroIscritti;i++){
int voto=iscritti[i].getVoto(this);
if(voto>0){
sommaVoti+=voto;
contaVoti++;
}
}
return sommaVoti/contaVoti;
}
public Studente[] getIscritti() {
return iscritti;
}
}
E questo è il main dove incontro i problemi descritti
package progetto_univ;
import java.util.*;
public class Progetto_univ {
public static void main(String[] args) {
System.out.println("---------------");
System.out.println("MENU");
String op=" ";
Scanner in=new Scanner(System.in);
Studente []allievi=new Studente[50];
Corso[]esami=new Corso[50];
int numStud=0;
int numesami=0;
int voto=0;
do{
System.out.println("Menu");
System.out.println("1.Inserisci studente");
System.out.println("2.Inserisci corso universitario");
System.out.println("3.Iscrivi studente a corso");
System.out.println("4.Inserisci voto studente");
System.out.println("5.Stampa media voti dello studente");
System.out.println("6.Stampa media voti del corso");
System.out.println("7.Stampa situazione studente");
System.out.println("8.Stampa iscritti al corso");
System.out.println("x.Uscita");
op=in.nextLine();
if(op.equals("1")){
System.out.println("Inserisci nome");
String nome=in.nextLine();
System.out.println("Inserisci cognome");
String cognome=in.nextLine();
System.out.println("Inserisci matricola");
String matricola=in.nextLine();
Studente s4=new Studente(nome, cognome, matricola);
allievi[numStud]=s4;
numStud++;
}
if(op.equals("2")){
System.out.println("Inserisci nome");
String nome=in.nextLine();
System.out.println("Inserisci docente");
String docente=in.nextLine();
Corso c4=new Corso(nome,docente);
esami[numesami]=c4;
numesami++;
}
if(op.equals("3")){
System.out.println("Inserisci nome corso");
String nome=in.nextLine();
System.out.println("Inserisci matricola studente");
String matricola=in.nextLine();
for(int i=0;i<numesami;i++){
if(esami[i].getNome().equals(nome)){
for(int j=0;j<numStud;j++){
if(allievi[j].getMatricola().equals(matricola)){
allievi[j].iscrivi(esami[i]);
}
}
}
}
}
if(op.equals("4")){
System.out.println("Inserisci nome corso");
String nome=in.nextLine();
System.out.println("Inserisci matricola studente");
String matricola=in.nextLine();
System.out.println("Inserisci voto studente");
voto=Integer.parseInt(in.nextLine());
for(int i=0;i<numesami;i++){
if(esami[i].getNome().equals(nome)){
for(int j=0;j<numStud;j++){
if(allievi[j].getMatricola().equals(matricola)){
allievi[j].registraVoto(esami[i], voto);
}
}
}
}
}
if(op.equals("5")){
System.out.println("Inserisci matricola studente");
String matricola=in.nextLine();
double m=0;
int i=0;
for(i=0;i<allievi[i].getNumeroCorsi();i++){
if(allievi[i].getMatricola().equals(matricola)){
m=30;
}
}
System.out.println("media dello studente "+allievi[i].getNome()+" "+allievi[i].getCognome()+" vale "+m);
}
if(op.equals("6")){
System.out.println("Inserisci nome corso");
String nome=in.nextLine();
double m=0;
int i=0;
for(i=0;i<esami[i].getNumeroIscritti();i++){
if(esami[i].getNome().equals(nome)){
m=30;
}
}
System.out.println("media del corso "+esami[i].getNome()+" con docente "+esami[i].getDocente()+" vale "+m);
}
if(op.equals("7")){
System.out.println("Inserisci matricola studente");
String matricola=in.nextLine();
int i=0;
int v=0;
for(i=0;i<numStud;i++){
if(allievi[i].getMatricola().equals(matricola)){
System.out.println("Studente "+allievi[i].getNome()+" "+allievi[i].getCognome());
//for(int j=0;j<numesami;j++){
//System.out.print(allievi[i].getesami()[allievi[j].getNumeroesami()].getNome());
//System.out.println(allievi[i].getVoti()[allievi[j].getNumeroesami()]);
allievi[i].toString();
//}
}
}
}
if(op.equals("8")){
System.out.println("Inserisci nome corso");
String nome=in.nextLine();
int i=0;
int v=0;
for(i=0;i<numesami;i++){
if(esami[i].getNome().equals(nome)){
System.out.println("Corso "+esami[i].getNome()+" ha iscritti"+" "+esami[i].getNumeroIscritti()+" persone");
System.out.println("-"+esami[i].getIscritti()[esami[i].getNumeroIscritti()].getMatricola());
}
}
}
if(op.equals("x")){
System.out.println("Uscita");
}
}
while(!op.equals("x"));
}
}