Angroth
03-02-2013, 19:10
Ciao a tutti, per un esame all'università devo portare un progetto per la gestione di un cinema.
Il progetto è composto da varie classi, una delle quali è la classe Spettatore che ha come campi idspettatore,nome,cognome,datanascita e biglietto (quest'ultima è un altra classe del progetto).
Il mio problema arriva quando devo implementare un metodo boolean, chiamato maggiorenne(), che restituisca true in caso che lo spettatore risulti maggiorenne o altrimenti false se minorenne.
Vi allego il codice della classe e dell'ambiente di test:
Spettatore.java
import java.util.*;
public class Spettatore {
protected int idspettatore;
protected String nome;
protected String cognome;
protected GregorianCalendar datanascita;
protected Biglietto biglietto;
public Spettatore(int idspettatore,String nome,String cognome,GregorianCalendar datanascita,Biglietto biglietto){
this.idspettatore=idspettatore;
this.nome=nome;
this.cognome=cognome;
this.datanascita=datanascita;
this.biglietto=biglietto;
}
public boolean maggiorenne(){
boolean mag=false;
GregorianCalendar now=new GregorianCalendar();
long diff= now.getTimeInMillis()-datanascita.getTimeInMillis();
int anni=(int) diff/(1000*60*60*24*30*12);
int mesi=(int) diff/(1000*60*60*24*30);
int giorni=(int) diff/(1000*60*60*24);
if (anni>18)
mag=true;
if((anni==18)&&(mesi>=0)&&(giorni>=0))
mag=true;
return mag;
}
}
Prova.java:
import java.util.*;
public class Prova {
public static void main(String[] args) {
int giorno=8;
int mese=5;
int anno=1992;
Biglietto biglietto=new Biglietto("a1",7.5);
GregorianCalendar datan=new GregorianCalendar(anno,mese,giorno);
Spettatore a=new Spettatore(1,"Pinco","Pallino",datan,biglietto);
System.out.println(datan.get(Calendar.DATE)+"-"+datan.get(Calendar.MONTH)+"-"+datan.get(Calendar.YEAR));
boolean c=a.maggiorenne();
if(c==true)
System.out.println("Sei maggiorenne!");
else if(c==false)
System.out.println("Sei minorenne!");
}
}
Il problema è che in output ricevo sempre il messaggio "Sei minorenne!".
Non riesco a capire cosa non va :cry: (sicuramente non ho ben capito l'uso del gregoriancalendar)
Il progetto è composto da varie classi, una delle quali è la classe Spettatore che ha come campi idspettatore,nome,cognome,datanascita e biglietto (quest'ultima è un altra classe del progetto).
Il mio problema arriva quando devo implementare un metodo boolean, chiamato maggiorenne(), che restituisca true in caso che lo spettatore risulti maggiorenne o altrimenti false se minorenne.
Vi allego il codice della classe e dell'ambiente di test:
Spettatore.java
import java.util.*;
public class Spettatore {
protected int idspettatore;
protected String nome;
protected String cognome;
protected GregorianCalendar datanascita;
protected Biglietto biglietto;
public Spettatore(int idspettatore,String nome,String cognome,GregorianCalendar datanascita,Biglietto biglietto){
this.idspettatore=idspettatore;
this.nome=nome;
this.cognome=cognome;
this.datanascita=datanascita;
this.biglietto=biglietto;
}
public boolean maggiorenne(){
boolean mag=false;
GregorianCalendar now=new GregorianCalendar();
long diff= now.getTimeInMillis()-datanascita.getTimeInMillis();
int anni=(int) diff/(1000*60*60*24*30*12);
int mesi=(int) diff/(1000*60*60*24*30);
int giorni=(int) diff/(1000*60*60*24);
if (anni>18)
mag=true;
if((anni==18)&&(mesi>=0)&&(giorni>=0))
mag=true;
return mag;
}
}
Prova.java:
import java.util.*;
public class Prova {
public static void main(String[] args) {
int giorno=8;
int mese=5;
int anno=1992;
Biglietto biglietto=new Biglietto("a1",7.5);
GregorianCalendar datan=new GregorianCalendar(anno,mese,giorno);
Spettatore a=new Spettatore(1,"Pinco","Pallino",datan,biglietto);
System.out.println(datan.get(Calendar.DATE)+"-"+datan.get(Calendar.MONTH)+"-"+datan.get(Calendar.YEAR));
boolean c=a.maggiorenne();
if(c==true)
System.out.println("Sei maggiorenne!");
else if(c==false)
System.out.println("Sei minorenne!");
}
}
Il problema è che in output ricevo sempre il messaggio "Sei minorenne!".
Non riesco a capire cosa non va :cry: (sicuramente non ho ben capito l'uso del gregoriancalendar)