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!");
		
		
		
		
		
		
		
		
		
		
		
		
		
		

	}

}