Newsgroup: it.comp.java
Titolo: Help aiuto non riesco a capire quale sia il mio errore!!! UN PO' LUNGO...

Ciao a tutti,
mi devo preparare ad un esame su java e sono proprio alle prime armi.... ho
fatto (buona parte in veritą č presa dal libro su cui studio) questa piccola
applicazione (4 classi + main)... in fase di compilazione non ho nessun
errore, ma quando provo con run mi dice:
"Exception in thread "main" java.lang.nullPointerException
    at CdL.getCognome(CdL.java:38)
    at Facolta.main(facolta.java:20)
Io non riesco proprio a capire dove siano i miei errori.
Grazie per qualunque suggerimento,
CAMILLA
PS. Qui sotto scrivo le varie classi...
public class Contatore {
 // attributi //
 private int valore;
 // costruttori //
 public Contatore() {
  valore = 0;
 }
  public Contatore(int x) {
  valore = x;
 }
 // metodi //
 public void inc() {
  valore++;
 }
  public int getVal() {
  return valore;
 }
}
____________________________________________________________________________
________________________________
public class Esami {
 // attributi
 private int voto; // voto preso dallo studente
 private String nome; // nome dell'esame
 // costruttori
 public Esami(String nome) {
  this.nome = nome;
  this.voto = 0;
 }
  public Esami(String nome, int voto) {
  this.nome = nome;
  this.voto = voto;
 }
 // metodi
 public boolean setVoto(int voto) {
  if (this.voto == 0) {
   this.voto = voto;
   return true;
  }
  else return false;
 }
  public int rdVoto() {
  return voto;
 }
  public boolean passed() {
  return (voto != 0);
 }
  public String getNome() {
  return nome;
 }
}
____________________________________________________________________________
____________________________________
public class Studenti {
// attributi
 private int mat; // numero di matricola
 private String nome, cognome; // nome e cognome dello studente
 private Contatore conta; // contatore esami dello studente
 private Esami[] esa; // vettore di riferimenti a oggetti esami
 private Contatore contaglobale;
 // costruttori
 public Studenti(int m, String n, String c, int ne, Contatore cg) {
  // ne = numero esami del corso di laurea
  mat = m;
  nome = n;
  cognome = c;
  esa = new Esami[ne];
  conta = new Contatore(); // per contare il numero di esami
  contaglobale = cg;
 }
 // metodi
 public void NewEsame(String nome, int voto) {
  conta.inc();
  contaglobale.inc();
  esa[conta.getVal()] = new Esami(nome, voto);
 }
 public boolean passed(String nome) {
  int i;
  for(i=0; i<conta.getVal(); i++) {
   if(esa[i].getNome().equals(nome))
    return esa[i].passed();
  }
  return false;
 }
 public String getCogn() {
  return cognome;
 }
}
____________________________________________________________________________
_______________________________________
public class CdL {
 // attributi
 private int numeroesami;
 private String denom;
 private Studenti[] stud;
 private Contatore studcont;
 private Contatore contaglob;
 // costruttori
 public CdL(int ne, String den, int maxstud) {
  numeroesami = ne;
  denom = den;
  stud = new Studenti[maxstud];
  contaglob = new Contatore();
  studcont = new Contatore();
 }
public CdL(String den) {
  this(36, den, 100);
 }
 // metodi
 public boolean NewStud(String nome, String cognome) {
  int newmatr;
  studcont.inc();
  newmatr = studcont.getVal();
  if(newmatr <= stud.length) {
   stud[newmatr] = new Studenti(newmatr, nome, cognome, numeroesami,
contaglob);
   return true;
  }
  else return false;
 }
 public Studenti getCognome(String cognome) {
  int i;
for(i=0; i<studcont.getVal(); i++)
   if(stud[i].getCogn().equals(cognome))
    return stud[i];
  return null;
 }
 public int totalpassed(String nome) {
  int i;
  Contatore tot = new Contatore();
 for(i=0; i<studcont.getVal(); i++) {
   if(stud[i].passed(nome))
    tot.inc();
  }
  return tot.getVal();
 }
}
____________________________________________________________________________
________________________________________
public class Facolta {
 public static void main(String args[]) {
  CdL ii, ie;
  int tot;
  String n1 = "Pinco";
  String c1 = "Pallino";
  Studenti ss;
  ii = new CdL("Ingegneria Informatica");
  ie = new CdL(37, "Ingegneria Elettronica", 200);
  ii.NewStud("Mirco", "Miscione");
  ii.NewStud("Francesco", "Pritto");
  ie.NewStud("James", "Bond");
  ie.NewStud(n1, c1);
  ss = ii.getCognome("Pritto");
  if (ss != null)
   ss.NewEsame("Analisi I", 30);
  ss = ie.getCognome("Bond");
  if (ss != null)
   ss.NewEsame("Fisica II", 27);
  tot = ii.totalpassed("Analisi I");
  System.out.println("Totale: " + tot);
 }
}

 fatto (buona parte in verità è presa dal libro su cui studio) questa

Mi sono fermato qui, costruire una stringa in quel modo non mi pare
corretto, in Java.
C'è un metodo apposta nella classe String.
                              IL SANTO

Ciao,
grazie della risposta, ma non riesco a capire quale sia l'errore... forse
non è molto bello come codice, ma mi sembra corretto.... mi puoi spiegare
meglio?
Grazie,
CAMILLA.
"IL SANTO" <mor...@morfato.morf> ha scritto nel messaggio
news:Im1Uc.44336$OH4.1...@twister1.libero.it...


  }
Controlla il nome di questo metodo. Probabilmente deve essere getCognome().
Buena suerte per l'esame!
Raffaele
-- 
Raffaele Castagno
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

   if(newmatr <= stud.length) {
[cut]
Secondo me l'ordine corretto è:
newmatr = studcont.getVal();
studcont.inc();
-- 
Njc

     return stud[i];
la variabile i parte da 0,ma stud[0] è vuoto e infatti punta a null
come ti viene segnalato dall'errore...
Saluti,
      Bigstar.