Problema con data e calendar

di il
9 risposte

Problema con data e calendar

Salve, ho un problema su data.set etc , mi dice di inizializzare ma non capisco come .... cioè se faccio fixare a lui ( eclipse) mi mette NULL
package View;
import java.util.ArrayList;
import java.util.Calendar;

import Model.Dipendente;
import Model.Persona;
import Model.Ruolo;
import Model.Titolo;



public class CRUD {
	
	int day;
	int month;
	int year;
	
	View v = new View();
	
	public void inserisci(ArrayList<Dipendente> azienda) {
		
		int ID;
		 String name;
		 String surname;
		 String sex;
		 Calendar data;
		 String CF;
		 String luogoNascita;
		 
		 ID=v.leggiIntero("Inserisci ID: ");
		 name=v.leggiStringa("Inserisci Nome ");
		 surname=v.leggiStringa("Inserisci cognome");
		 sex=v.leggiStringa("Inserisci sesso : ");
		 CF=v.leggiStringa("Inserisci CF:");
		 luogoNascita=v.leggiStringa("Inserisci luogo nascita ");
		 
		 data.set(day,month,year);
		 System.out.println(v.toString());
		 
		 
		 
	}

}
grazie

9 Risposte

  • Re: Problema con data e calendar

    Stai cercando di utilizzare l'oggetto "data" (di tipo Calendar) senza che questo sia stato inizializzato... otterrai una NullPointerException.
    Gli oggetti, prima di poterli usare, vanno creati. Quindi da qualche parte dovrà esserci un

    data = Calendar.getInstance();

    oppure

    data = new GregorianCalendar();

    o qualcos'altro.

    Ciao.
  • Re: Problema con data e calendar

    Grazie , alla fine però ci hanno fatto risolvere impostando le variabili come globali :/
  • Re: Problema con data e calendar

    RafSa ha scritto:


    Grazie , alla fine però ci hanno fatto risolvere impostando le variabili come globali :/
    "risolvere"?
    Globali o non globali, gli oggetti vanno istanziati prima di poter essere usati...
  • Re: Problema con data e calendar

    La traccia che ci hanno dato è questa , ma non ho capito bene come implementare il tutto Io ho svolto seguendo le indicazioni del docente del corso qui di Java ( di formazione ) dividendo le classi in CRUD, classi e View .
    La traccia è questa :
    GESTIONE DI UNA AZIENDA DI TIPO ARRAYLIST
    ARRAYLIST DI TIPO DIPENDENTE 
    LAVORARE CON L'EREDITARIETA'
    -DIPENDENTE
    -MANAGER
    -DIRIGENTE
    
    CREARE LA CLASSE BASE PERSONA:
    ID (INT)
    NOME (STRING)
    COGNOME (STRING)
    SESSO 
    DATA DI NASCITA (DATE)
    LUOGO DI NASCITA (STRING)
    CODIC FISCALE. (STRING)
    
    DIPENDENTE EREDITA PERSONA:
    MATRICOLA (STRING)
    ID TITOLO DI STUDIO     LICENZIA MEDIA DIPLOMA LAUREA 3 E MAGISTRALE
    ID RUOLO                AMMINISTRATORE, DIRETTORE GENERALE, COMMERCIALE, PROGRAMMATORE,PROJECT MANAGER,SISTEMISTA E DBA
    STIPENDIO (DOUBLE)
    DOVRA' AVERE ALTRI DUE MODEL CON ID TITOLO DI STUDIO E ID RUOLO
    
    MANAGER EREDITA DIPENDENTE 
    AREA DI RESPONSABILITA'  (STRING)
    
    
    
    DIRIGENTE EREDITA MANAGER
    LIVELLO FUNZIONALE (STRING)
    
    
    
    CLASSE CRUD 
    CREARE ARRAYLIST AZIENDA 
    VETTORE DI TIPO RUOLO 
    VETTORE DI TIPO TITOLO DI STUDIO 
    
    -INSERISCI  PASSARE DIPENDENTE D
    -MODIFICA   PASSARE INT I, DIPENDENTE D
    -CANCELLAZIONE   INT I;
    -LEGGI()   RESTITUISCE INDIRIZZO DELL'ARRAY
    -LEGGI INT //mi legge solo l'indice che gli passo
    
    CLASSE VIEW:
    LEGGI STRINGA 
    LEGGI INTERO
    LEGGI DOUBLE
    VISUALIZZA MESSAGGIO
    MASCHERA INSERIMENTO //chiedere cosa voglio inserire fare lo switch case 
    MASCHERA MODIFICA 
    CANCELLA 
    VISUALIZZA //leggi di crud mi legge il valore e mi visualizza tutto tutto. 
    MENU PRINCIPALI //1INSERISCI    2MODIFICA    3CANCELLA     4VISUALIZZA    5ESCI
    
    
    
    
    
    
    
     
    
    
    
    
    
    Io ho svolto cosi :

    package Controller , classe controller ( come ci hanno detto di fare ) che ancora non implemento
    package Controller;
    import java.util.Scanner;
    
    import Model.Dipendente;
    import Model.Persona;
    import Model.Ruolo;
    import Model.Titolo;
    public class Controller {
    	
    	public static void main(String[] args) {
    		
    		
    		
    		
    	}
    	
    	
    
    }
    

    Model classe dipendente
    package Model;
    import Model.Persona;
    
    public class Dipendente extends Persona {
    	
    	private String matricola;
    	private int ruolo;
    	private int titoloStudio;
    	private double stipendio;
    	
    	
    	
    	public String getMatricola() {
    		return matricola;
    	}
    	
    	public int getRuolo() {
    		return ruolo;
    	}
    	
    	public int getTitoloStudio() {
    		return titoloStudio;
    		
    	}
    	
    	public double getStipendio() {
    		return stipendio;
    	}
    	
    	public void setMatricola(String matricola ) {
    		this.matricola=matricola;
    	}
    
    	public void setRuolo(int ruolo) {
    		this.ruolo=ruolo;
    	}
    	public void setTitoloStudio(int titoloS) {
    		this.titoloStudio=titoloS;
    	}
    	
    	public void setStipendio(double stipendio ) {
    		this.stipendio=stipendio;
    	}
    
    	@Override
    	public String toString() {
    		return "Dipendente [matricola=" + matricola + ", ruolo=" + ruolo + ", titoloStudio=" + titoloStudio
    				+ ", stipendio=" + stipendio + "]";
    	}
    
    	@Override
    	public int hashCode() {
    		final int prime = 31;
    		int result = 1;
    		result = prime * result + ((matricola == null) ? 0 : matricola.hashCode());
    		result = prime * result + ruolo;
    		long temp;
    		temp = Double.doubleToLongBits(stipendio);
    		result = prime * result + (int) (temp ^ (temp >>> 32));
    		result = prime * result + titoloStudio;
    		return result;
    	}
    
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		Dipendente other = (Dipendente) obj;
    		if (matricola == null) {
    			if (other.matricola != null)
    				return false;
    		} else if (!matricola.equals(other.matricola))
    			return false;
    		if (ruolo != other.ruolo)
    			return false;
    		if (Double.doubleToLongBits(stipendio) != Double.doubleToLongBits(other.stipendio))
    			return false;
    		if (titoloStudio != other.titoloStudio)
    			return false;
    		return true;
    	}
    }
    
    
    
    package Model , classe Persona
    package Model;
    
    import java.util.*;
    public class Persona {
    	
    	private int ID;
    	private String name;
    	private String surname;
    	private String sex;
    	private Calendar data;
    	private String CF;
    	private String luogoNascita;
    	
    	
    	public Calendar getData() {
    		return data;
    	}
    	public String getluogoNascita() {
    		return luogoNascita;
    	}
    	public String getCF() {
    		return CF;
    	}
    	
    	public String getSex() {
    		return sex;
    	}
    	public String getName() {
    		return name;
    	}
    	
    	public String getSurname() {
    		return surname;
    	}
    	
    	public int getID() {
    		return ID;
    	}
    	
    	public void setID(int id) {
    		this.ID=id;
    	}
    	
    	public void setSex(String sex) {
    		this.sex=sex;
    	}
    	
    	public void setCF(String cf) {
    		this.CF=cf;
    	}
    	
    	public void setluogoNascita(String luogoNascita) {
    		this.luogoNascita=luogoNascita;
    		
    	}
    	
    	public void setData(Calendar data) {
    		this.data = data;
    	}
    	
    	public void setName(String name) {
    		this.name=name;
    		
    	}
    	public void setSurname(String surname) {
    		this.surname=surname;
    	}
    	
    	
    	
    	
    	public Persona() {};
    	
    	public Persona(String name, String surname, int ID,String CF, String luogoNascita,String sex,Calendar data){
    		this.name = name;
    		this.surname=surname;
    		this.ID=ID;
    		this.CF=CF;
    		this.luogoNascita=luogoNascita;
    		this.sex=sex;
    		this.data=data;
    	}
    	@Override
    	public String toString() {
    		return "Persona [ID=" + ID + ", name=" + name + ", surname=" + surname + ", sex=" + sex + ", data=" + data
    				+ ", CF=" + CF + ", luogoNascita=" + luogoNascita + "]";
    	}
    	@Override
    	public int hashCode() {
    		final int prime = 31;
    		int result = 1;
    		result = prime * result + ((CF == null) ? 0 : CF.hashCode());
    		result = prime * result + ID;
    		result = prime * result + ((data == null) ? 0 : data.hashCode());
    		result = prime * result + ((luogoNascita == null) ? 0 : luogoNascita.hashCode());
    		result = prime * result + ((name == null) ? 0 : name.hashCode());
    		result = prime * result + ((sex == null) ? 0 : sex.hashCode());
    		result = prime * result + ((surname == null) ? 0 : surname.hashCode());
    		return result;
    	}
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		Persona other = (Persona) obj;
    		if (CF == null) {
    			if (other.CF != null)
    				return false;
    		} else if (!CF.equals(other.CF))
    			return false;
    		if (ID != other.ID)
    			return false;
    		if (data == null) {
    			if (other.data != null)
    				return false;
    		} else if (!data.equals(other.data))
    			return false;
    		if (luogoNascita == null) {
    			if (other.luogoNascita != null)
    				return false;
    		} else if (!luogoNascita.equals(other.luogoNascita))
    			return false;
    		if (name == null) {
    			if (other.name != null)
    				return false;
    		} else if (!name.equals(other.name))
    			return false;
    		if (sex == null) {
    			if (other.sex != null)
    				return false;
    		} else if (!sex.equals(other.sex))
    			return false;
    		if (surname == null) {
    			if (other.surname != null)
    				return false;
    		} else if (!surname.equals(other.surname))
    			return false;
    		return true;
    	}
    }
    
    
    
    package Model , class Ruolo
    package Model;
    import Model.Dipendente;
    import Model.Persona;
    public class Ruolo {
    	
    	private String [] ruol = new String[]  {
    			
    			"1 - \nPROGRAMMATORE\n",
    			"2 - \nAMMINISTRATORE\n",
    			"3 - \nDIRETTORE GENERALE\n",
    			"4 - \nCOMMERCIALE\n",
    			"5 - \nPROJECT MANAGER\n",
    			"6 - \nSISTEMISTA\n",
    			"7 - \nDBA\n"
    			
    	};
    	
    	public String[] getRuol() {
    		return ruol;
    	}
    
    }
    
    package Model , classe Titolo
    package Model;

    public class Titolo {
    private String [] titolo = new String[] {

    "8 - \n Diploma di Scuola Inferiore\n",
    "9 - \nDiploma di Scuola Superiore\n",
    "10 - \nLaurea triennale\n",
    "11 - \nLaurea Magistrale\n"
    };

    public String[] getTitolo() {
    return titolo;
    }

    }
    package View , classe CRUD
    package View;
    import java.util.ArrayList;
    import java.util.Calendar;
    
    import Model.Dipendente;
    import Model.Persona;
    import Model.Ruolo;
    import Model.Titolo;
    
    
    
    public class CRUD {
    	
    	int day;
    	int month;
    	int year;
    	
    	View v = new View();
    	
    	int ID;
    	 String name;
    	 String surname;
    	 String sex;
    	 Calendar data;
    	 String CF;
    	 String luogoNascita;
    	 int scelta;
    	
    	public void inserisci(ArrayList<Dipendente> azienda) {
    		
    		
    		 
    		 
    		 ID=v.leggiIntero("Inserisci ID: ");
    		 name=v.leggiStringa("Inserisci Nome ");
    		 surname=v.leggiStringa("Inserisci cognome");
    		 sex=v.leggiStringa("Inserisci sesso : ");
    		 CF=v.leggiStringa("Inserisci CF:");
    		 luogoNascita=v.leggiStringa("Inserisci luogo nascita ");
    		 day=v.leggiIntero("Inserisci giorno");
    		 month=v.leggiIntero("Inserisci mese");
    		 year=v.leggiIntero("Inserisci anno");
    		 data.set(day,month,year);
    		 System.out.println(v.toString());
    		 
    		 scelta=v.leggiIntero("Inserisci un valore : ");
    		 switch(scelta) {
    		 case 1:
    			 System.out.println("1 inserisci Dipendente");
    			 Dipendente dip = new Dipendente();
    			 dip.getStipendio();
    			 break;
    		 case 2:
    			 System.out.println("2 modifica :");
    			 d.get
    		 
    		 }
    		 
    		 
    		 
    	}
    
    }
    package View, classe View
    package View;
    import java.util.Scanner;
    
    import Model.Dipendente;
    import Model.Persona;
    import Model.Ruolo;
    import Model.Titolo;
    
    public class View {
    static Scanner input = new Scanner(System.in);
    	
    	public String leggiStringa(String mess) {
    		String str;
    		System.out.print(mess);
    		str = input.nextLine();
    		return str;
    	}
    	
    	public int leggiIntero(String mess) {
    		int in = -1;
    		boolean  flag;
    		do {
    			flag = false;
    			String str=leggiStringa(mess);
    			try {
    				if(!(str.equals(""))) {
    					in = Integer.parseInt(str);
    				}
    			}
    			catch(NumberFormatException e) {
    				System.out.print("Valore non valido! " + mess);
    				flag = true;
    			}
    		} while(flag);
    		return in;
    	}
    
    	
    
  • Re: Problema con data e calendar

    LeleFT ha scritto:


    RafSa ha scritto:


    Grazie , alla fine però ci hanno fatto risolvere impostando le variabili come globali :/
    "risolvere"?
    Globali o non globali, gli oggetti vanno istanziati prima di poter essere usati...
    Istanziando restituisce comunque errore
  • Re: Problema con data e calendar

    RafSa ha scritto:


    LeleFT ha scritto:


    RafSa ha scritto:


    Grazie , alla fine però ci hanno fatto risolvere impostando le variabili come globali :/
    "risolvere"?
    Globali o non globali, gli oggetti vanno istanziati prima di poter essere usati...
    Istanziando restituisce comunque errore
    Ma che vuol dire??
    TUTTI gli oggetti DEVONO (obbligatoriamente!) essere istanziati prima di poterne usare i metodi... questa è la base di qualsiasi linguaggio Object Oriented e Java non fa eccezione... se vuoi usare un oggetto qualsiasi lo devi prima istanziare... lo fai anche tu con quell'oggetto View... se non facessi new View() non potresti usarne i metodi come fai in quel snippet... quindi: spiega bene cosa stai facendo, come lo stai facendo e che errori ottieni.
    Come istanziare un oggetto Calendar te l'ho già fatto vedere nel primo post.

    Nella classe CRUD hai dichiarato un oggetto Calendar che si chiama data:
    
    Calendar data;
    
    Ma non lo hai istanziato da nessuna parte!
    Quindi, nel metodo inserisci() quando vai a fare:
    
    data.set(day,month,year);
    
    Stai usando un oggetto non inizializzato (otterrai una NullPointerException) perchè, appunto l'oggetto "data" è nullo.

    Potresti istanziarlo esattamente dove lo stai dichiarando:
    
    Calendar data = Calendar.getInstance();
    
    Ciao.
  • Re: Problema con data e calendar

    Va bene grazie mille sicuramente il problema era questo, l'ho riscontrato anche io per questo.
  • Re: Problema con data e calendar

    LeleFT ha scritto:


    RafSa ha scritto:


    LeleFT ha scritto:



    "risolvere"?
    Globali o non globali, gli oggetti vanno istanziati prima di poter essere usati...
    Istanziando restituisce comunque errore
    Ma che vuol dire??
    TUTTI gli oggetti DEVONO (obbligatoriamente!) essere istanziati prima di poterne usare i metodi... questa è la base di qualsiasi linguaggio Object Oriented e Java non fa eccezione... se vuoi usare un oggetto qualsiasi lo devi prima istanziare... lo fai anche tu con quell'oggetto View... se non facessi new View() non potresti usarne i metodi come fai in quel snippet... quindi: spiega bene cosa stai facendo, come lo stai facendo e che errori ottieni.
    Come istanziare un oggetto Calendar te l'ho già fatto vedere nel primo post.

    Nella classe CRUD hai dichiarato un oggetto Calendar che si chiama data:
    
    Calendar data;
    
    Ma non lo hai istanziato da nessuna parte!
    Quindi, nel metodo inserisci() quando vai a fare:
    
    data.set(day,month,year);
    
    Stai usando un oggetto non inizializzato (otterrai una NullPointerException) perchè, appunto l'oggetto "data" è nullo.

    Potresti istanziarlo esattamente dove lo stai dichiarando:
    
    Calendar data = Calendar.getInstance();
    
    Ciao.
    grazie... in serata provo
  • Re: Problema con data e calendar

    Funziona quindi avevo capito bene che bisognava istanziare , probabilmente il docente intendeva non so cosa e non si è fatto capire .... così come il fatto di gestire alcuni oggetti e settarli .... in quest'esercizio azienda , bisogna creare modelli persona , dipendente, manager, dirigente , crud , view, controller ma il problema è che nello switch ci sta facendo inserire tutti i dati con metodi set .... invece io avrei usato la dot notation per richiamarli .... e questa cosa non mi è chiara .... Mi ha fatto pulire , ad esempio , la CRUD ma ora la View è una ciofeca ........ esempio -> il mio CRUD
    public class CRUD {
    
    	
    private ArrayList<Dipendente> azienda = new ArrayList<Dipendente>();
    	public void inserisciDipendente(Dipendente dipendente) {
    		
    		azienda.add(dipendente);
    	}
    	
    	public void modificaDipendente(int indice, Dipendente dipendente) {
    		
    		azienda.set(indice, dipendente);
    	}
    	
    	
    	
    	
    public void eliminaDipendente(int indice) {
    	
    	azienda.remove(indice);
    	
    }
    		public ArrayList<Dipendente> leggi(){
    			
    			return azienda;
    			
    		}
    		
    		public Dipendente leggi(int indice)
    		{
    			return azienda.get(indice);
    		}
    
    		
    }
    
    mentre la View : ( non finita poichè io stavo gestendo con gli switch ma il docente vorrebbe tutti set tipo

    case 3 :
    dipendente.setNome dipendente.setCognome etc )
     package View;
    import java.util.Scanner;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.text.ParseException;
    
    
    import Model.Dipendente;
    import Model.Persona;
    import Model.Ruolo;
    import Model.Titolo;
    
    public class View {
    	
    	
    	View v = new View();
    	
    	
    	public void stampaMenu() {
    		
    		System.out.println("1) Inserire Dipendente oppure Manager oppure Dirigente :");
    		System.out.println("2) Modifica:");
    		System.out.println("3) Cancella :");
    		System.out.println("4) Visualizza : ");
    		System.out.println("5) Esci");
    		
    	}
    	
    	 
    	
    	public Date letturaData(String mess) {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date data=null;
            boolean err;
            String str="", datan="";
            System.out.print(mess);
            @SuppressWarnings("resource")
            Scanner input=new Scanner(System.in);
            do {
                err=false;
                str=input.nextLine();
                try {
                    data=sdf.parse(str);
                } catch (ParseException e) {
                    err=true;
                }
                if (data==null)
                    datan="null";
                else
                    datan=sdf.format(data);
                if (!str.equals(datan))
                    err=true;
                if (err)
                    System.out.println("Il valore non è del formato dd/mm/yyyy. Inserire una data valida:");
            } while (err);
            return data;
        }
    	
    	public Persona leggiNome(String name) {
    		Persona p = new Persona();
    		p.setName("Peppe");
    		p.setSurname("Gennaro");
    		p.setSex("Maschio");
    		
    		return p;
    	}
    	
    static Scanner input = new Scanner(System.in);
    	
    	public String leggiStringa(String mess) {
    		String str;
    		System.out.print(mess);
    		str = input.nextLine();
    		return str;
    	}
    	
    	public int leggiIntero(String mess) {
    		int in = -1;
    		boolean  flag;
    		do {
    			flag = false;
    			String str=leggiStringa(mess);
    			try {
    				if(!(str.equals(""))) {
    					in = Integer.parseInt(str);
    				}
    			}
    			catch(NumberFormatException e) {
    				System.out.print("Valore non valido! " + mess);
    				flag = true;
    			}
    		} while(flag);
    		return in;
    	}
    	
    	
    	public void stampaScelta() {
    		stampaMessaggio("1 Inserisci Dipendente");
    		stampaMessaggio("2 Inserisci Manager");
    		stampaMessaggio("3 Inserisci Dirigente");
    		stampaMessaggio("4 esci");
    	}
    
    	
    	public Dipendente mascheraInserimento() {
    		
    		v.stampaMenu();
    		int scelta= v.leggiIntero("\n Scelta:");
    		switch(scelta) {
    		
    		case 1:
    			conta++;
    			return new Dipendente(conta-1,leggiStringa("\nInserisci il nome del Dipendente."))
    		
    		}case 2:
    			
    		conta++;
    		return new Manager
    		
    		
    		
    		
    	}
    
    
    
    	
    	
    	
    } 
    Mi sto solo confondendo ......
Devi accedere o registrarti per scrivere nel forum
9 risposte