Salve a tutti. Devo implementare una classe ambulatorio.
L'oggetto di tipo ambulatorio ha i soliti attributi: cognome, nome, comune di residenza, data di nascita, genere (M o F). Ma ha anche l'attributo categoria d'esenzione che è da calcolare: E1 se il paziente ha più di 65 anni, E2 se il paziente è donna e ha un'età compresa tra i 60 e i 65, E3 se ha meno di 18 anni e un campo vuoto in alternativa.
Io ho provato in questo modo, ma mi da il seguente errore:
Questa è la classe dei costruttori:Exception in thread "main" java.lang.NullPointerException
at Ambulatorio.esenzione(Ambulatorio.java:30)
at Ambulatorio_tester.main(Ambulatorio_tester.java:45 )
La classe dei metodi:codice:public class Ambulatorio1 { //COSTRUTTORE public Ambulatorio1(String cognome, String nome, String comune, String data, String genere, String cat) { sur=cognome; name=nome; com=comune; date=data; gen=genere; es=cat; } public String getSur() { return sur; } public String getName() { return name; } public String getCom() { return com; } public String getDate() { return date; } public String getEs() { return es; } public String getGen() { return gen; } //Campi esemplare private String sur; private String name; private String com; private String date; private String gen; private String es; }
La classe di collaudo: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); } //categoria d'esenzione public String esenzione(Ambulatorio1 ogg) { String esenz = null; //fornendo un oggetto di tipo ambulatorio //calcola la categoria d'esenzione String today = "09/02/2013"; String born = ogg.getDate(); String todayYear = today.substring(6, 9); String bornYear = born.substring(6, 9); int oggi = Integer.parseInt(todayYear); int nascita = Integer.parseInt(bornYear); //differenza tra la data di oggi e la data di nascita if(oggi - nascita>65) { esenz = "E1"; } else if(oggi - nascita<18) { esenz = "E3"; } else if(oggi - nascita>=60 && oggi - nascita<=65) { if(ogg.getGen().equalsIgnoreCase("F")) { esenz = "E2"; } } else esenz = ""; return(esenz); } //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()); } } } } } }
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("Data nascita paziente "+(i+1)+": "); String data = in.next(); System.out.println("Genere paziente "+(i+1)+"(M/F): "); String gen = in.next(); System.out.println("Cat.esenz paziente "+(i+1)+": "); String es = temp.esenzione(pazienti[i]); pazienti[i] = new Ambulatorio1(cogn,nome,comune,data,gen,es); } 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!"); } }
Grazie anticipatamente!

Rispondi quotando