Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    50

    [JAVA] Classe Ambulatorio: calcolare la categoria d'esenzione

    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:

    Exception in thread "main" java.lang.NullPointerException
    at Ambulatorio.esenzione(Ambulatorio.java:30)
    at Ambulatorio_tester.main(Ambulatorio_tester.java:45 )
    Questa è la classe dei costruttori:
    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 dei metodi:

    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());
    					}
    				}
    			}
    		}
    		
    	}
    	
    	
    
    }
    La classe di collaudo:

    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!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    50
    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!");
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    
    	}
    
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.