Ci ho riflettuto un po' e ho apportato alcune modifiche. Ho creato un metodo getEtà e un metodo per aggiornare il campo "categoria di esenzione". Nel collaudo ho fatto in modo di farmi dare automaticamente il campo dell'esenzione vuoto. Poi ho modificato questo attributo con il metodo "aggiornaEsenzione", mettendo i vari if nella classe di collaudo. Va bene così o c'è un metodo migliore??
[CODE]public class Ambulatorio1 {
//COSTRUTTORE
public Ambulatorio1(String cognome, String nome, String comune,
int giorni, int mesi, int anno, String genere, String cat)
{
sur=cognome;
name=nome;
com=comune;
gg=giorni;
mm=mesi;
yy=anno;
gen=genere;
es=cat;
}
public String getSur()
{
return sur;
}
public String getName()
{
return name;
}
public String getCom()
{
return com;
}
public int getEtà()
{
//oggi è 9 febbraio 2013
int età = 2013-yy;
if(mm>=02){
if(gg>=9){
età--;
}
}
return(età);
}
public String getEs()
{
return es;
}
public String getDate()
{
String data=null;
String giorni = Integer.toString (gg);
String mesi = Integer.toString (mm);
String anno = Integer.toString (yy);
data=giorni+"/"+mesi+"/"+anno;
date=data;
return (date);
}
public String getGen()
{
return gen;
}
//categoria d'esenzione
public void aggiornaEsenzione(String esenzione)
{
es = esenzione;
}
//Campi esemplare
private String sur;
private String name;
private String com;
private int gg;
private int mm;
private int yy;
private String gen;
private String es;
private String date;
}
/CODE]
codice:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Ambulatorio {
//trasformo stringhe in date
private static Date trasf(String data)
{
Date data1 = null;
try{
SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
data1 = sdf.parse(data);
}catch(ParseException ex){ex.printStackTrace();}
return (data1);
}
//stampa tabellare
public void showTab(Ambulatorio1[]v)
{
String divider = "______________________________" +
"___________________________________________________________";
String tit1 = "COGNOME";
String tit2 = "NOME";
String tit3 = "COMUNE";
String tit4 = "DATA NASCITA";
String tit5 = "GENERE";
String tit6 = "CAT.ESENZIONE";
System.out.println("");
System.out.printf("%-15s %-15s %-15s %-15s %-15s %-15s %n",
tit1,tit2,tit3,tit4,tit5,tit6);
System.out.println(divider);
for(int i=0;i<v.length;i++)
{
String nome = v[i].getName();
String cogn = v[i].getSur();
String com = v[i].getCom();
String data = v[i].getDate();
String gen = v[i].getGen();
String es = v[i].getEs();
System.out.printf("%-15s %-15s %-15s %-15s %-15s %-15s %n",
cogn,nome,com,data,gen,es);
}
System.out.println(divider);
System.out.println("");
}
//STAMPA NORMALE
public void stampa(Ambulatorio1[]v)
{
for(int i=0;i<v.length;i++)
{
System.out.println(v[i].getSur()+", "+v[i].getName()+", "+v[i].getCom()
+", "+v[i].getDate()+", "+v[i].getGen()+", "+v[i].getEs());
}
}
//paziente più anziano
public void piuAnz(Ambulatorio1[]v)
{
Date[] c = new Date[v.length];
//array di date
for(int i=0;i<v.length;i++)
{
c[i]= Ambulatorio.trasf(v[i].getDate());
}
Date min = c[0];
Ambulatorio1 anz = v[0];
for(int i=1;i<c.length;i++)
{
if(c[i].compareTo(min)<0)
{
min = c[i];
anz =v[i];
}
}
System.out.println("Paziente più anziano: "+anz.getName()
+" "+anz.getSur());
}
//Pazienti residenti in un comune il cui nome contenga il
//carattere 'a'
public void carA(String comune, Ambulatorio1[]v)
{
for(int i=0;i<v.length;i++)
{
if((v[i].getCom()).equalsIgnoreCase(comune))
{
for(int j=0;j<(v[i].getName()).length();j++)
{
if((v[i].getName()).charAt(j)=='a')
{
System.out.println(v[i].getSur()+", "+v[i].getName()+", "+v[i].getCom()
+", "+v[i].getDate()+", "+v[i].getGen()+", "+v[i].getEs());
break;
}
}
}
}
}
}
codice:
import java.util.Scanner;
public class Ambulatorio_tester {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int scelta;
Ambulatorio1[] pazienti = null;
Ambulatorio temp;
do
{
System.out.println("Scegli tra le seguenti operazioni:"
+"\n1.Popolamento array da input"
+"\n2.Stampa tabellare"
+"\n3.Dati del paziente il cui nome contiene il carattere 'a'"
+"\n4.Paziente più anziano"
+"\n5.Termina programma");
scelta = in.nextInt();
switch(scelta)
{
case 1:
temp = new Ambulatorio();
System.out.println("QUANTI PAZIENTI VUOI INSERIRE?");
int num = in.nextInt();
pazienti = new Ambulatorio1[num];
for(int i=0;i<pazienti.length;i++){
System.out.println("Cognome paziente "+(i+1)+": ");
String cogn = in.next();
System.out.println("Nome paziente "+(i+1)+": ");
String nome = in.next();
System.out.println("Comune paziente "+(i+1)+": ");
String comune = in.next();
System.out.println("giorno nascita paziente "+(i+1)+": ");
int giorno = in.nextInt();
System.out.println("mese nascita paziente "+(i+1)+": ");
int mese = in.nextInt();
System.out.println("anno nascita paziente "+(i+1)+": ");
int anno = in.nextInt();
System.out.println("Genere paziente "+(i+1)+"(M/F): ");
String gen = in.next();
//cat esenzione (vuota per il momento)
String es = "";
pazienti[i] = new Ambulatorio1(cogn,nome,comune,giorno,mese,anno,gen,es);
}
//AGGIORNO CATEGORIA ESENZIONE
for (int i=0; i<pazienti.length; i++)
{
if (pazienti[i].getEtà()>65)
pazienti[i].aggiornaEsenzione("E1");
else if (pazienti[i].getEtà()>60 && pazienti[i].getEtà()<65)
pazienti[i].aggiornaEsenzione("E2");
else if (pazienti[i].getEtà()<18)
pazienti[i].aggiornaEsenzione("E3");
}
temp.stampa(pazienti);
System.out.println("");
break;
case 2:
System.out.println("STAMPA TABELLARE");
temp = new Ambulatorio();
temp.showTab(pazienti);
System.out.println("");
break;
case 3:
System.out.println("Dati del paziente il cui nome contiene il carattere 'a'");
System.out.println("Comune in cui cercare: ");
String comune = in.next();
temp = new Ambulatorio();
temp.carA("Triggiano", pazienti);
System.out.println("");
break;
case 4:
System.out.println("PAZIENTE PIU ANZIANO");
temp = new Ambulatorio();
temp.piuAnz(pazienti);
System.out.println("");
}
}while(scelta!=5);
System.out.println("Programma terminato!");
}
}