+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

[Java] Errore: NullPointerException

  1. #1
    leone804 non  in linea Novello
    ciao, ho un problema con l'esecuzione di un programma. in pratica devo leggere delle righe da un file txt e memorizzarle in un vector, dopo di che devo effettuare delle operazioni di inserimento/ricerca dati nel file attraverso il vector. quando vado ad avviare il programma a volte il file viene "caricato" nel vector ed altre volte no. ad ogni modo quando provo ad inserire un nuovo dato nel file attraverso il vector compare il seguente errore:

    Exception in thread "main" java.lang.NullPointerException
    at Address.print(address.java:70)
    at Agenda.insAddress(agenda.java:39)
    at UseAgenda.main(agenda.java:70)

    il codice della classe questo:

    //Costruttore
    	public Agenda(String name) throws Exception {
    		v=new Vector();
    		BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream (name)));
    		PrintStream ps=new PrintStream(new FileOutputStream(name));
    		Address a = Address.read(br);
    		while(a != null) {
    			v.addElement(a);
    			a = Address.read(br);
    		}
    	}
    
    //Metodo read
    	public static Address read(BufferedReader br) throws Exception {
    		String s1, s2, s3, s4;
    		s1=br.readLine();
    		if (s1==null){
    			System.out.println("ERRORE!!!!");
    			return null;
    			}
    		s2=br.readLine();
    		s3=br.readLine();
    		s4=br.readLine();
    		return new Address(s1,s2,s3,s4);
    		}
    
    //Metodo per l'inserimento di dati sul file
    	public void insAddress(BufferedReader br) throws Exception{
    		Address a;
    		this.v.addElement(Address.read(br));
    		Enumeration e=this.v.elements();
    		while (e.hasMoreElements()) {
    			a=(Address) e.nextElement();
    			a.print(fileps);
    		}		
    	}
    
    dove sbaglio? grazie per l'aiuto

  2. #2
    ivanvenuti non  in linea Scolaretto
    non riporti la parte davvero significativa, ovvero dove si verifica l'eccezione: Address.print(address.java:70)

    In pratica è la riga 70 del file address.java
    ℹ️ Leggi di pi su ivanvenuti ...

  3. #3
    leone804 non  in linea Novello
    posto l'intero metodo contenente l'errore:

    	public void print(PrintStream ps) {
    		ps.println(first);
    		ps.println(last);
    		ps.println(phone);
    		ps.println(address);
    	}
    
    la riga 70 ps.println(first). first,last,phone e address sono variabili d'istanza
    grazie per l'aiuto

  4. #4
    ivanvenuti non  in linea Scolaretto
    significa che il PrintStream passato (ps) è null.
    Visto che nel costruttore fai:
    PrintStream ps=new PrintStream(new FileOutputStream(name));

    è probabile che tale inizializzazione fallisca e venga sollevata una eccezione. Come la gestisci? Probabilmente hai un tray/catch vuoto e non te ne accorgi...
    ℹ️ Leggi di pi su ivanvenuti ...

  5. #5
    leone804 non  in linea Novello
    cos' un tray/catch? perdonami l'ignoranza, ma sono proprio alle prime armi con java (lo sto studiando per un esame universitario)

  6. #6
    ivanvenuti non  in linea Scolaretto
    allora non lo usi :-) (vedi qui: http://www.java-net.it/jmonline/cap7/trycatch.htm

    piuttosto, mi sono accorto ora che tu hai postato la classe Agenda ma il problema è nella classe Address (di cui fa parte il metodo print postato). Metti qui anche il contenuto del resto della classe Address (dov'è probabile che non inizializzi correttamente il PrintStream... )
    ℹ️ Leggi di pi su ivanvenuti ...

  7. #7
    leone804 non  in linea Novello
    questo è il frammento di codice contenente l'errore

    public void print(PrintStream ps) {
    ps.println(first);
    ps.println(last);
    ps.println(phone);
    ps.println(address);
    }
    
    la riga 70 è ps.println(first). il resto della classe contiene dei semplici metodi per la restituzione dei valori delle variabili d'istanza.
    il try/catch non posso usarlo, essendo un esame universitario sono abbastanza "limitato" e non posso usare cose non fatte a lezione

  8. #8
    ivanvenuti non  in linea Scolaretto
    ma il costruttore ce l'hai o no?
    Se NO, allora PrintStream ps non lo inizializza nessuno!!
    ℹ️ Leggi di pi su ivanvenuti ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 0
    Ultimo Post: 04-06-2011, 15:45
  2. Java Bean errore IWAV0048I
    Da Vbnet nel forum Java
    Risposte: 3
    Ultimo Post: 26-10-2009, 10:33
  3. [Java]errore class path
    Da lala nel forum Java
    Risposte: 1
    Ultimo Post: 27-05-2006, 11:59
  4. Errore esecuzione programma in java
    Da ScorpionX nel forum Java
    Risposte: 14
    Ultimo Post: 15-05-2006, 18:51
  5. Errore popup java
    Da klinik nel forum HTML, CSS e JavaScript
    Risposte: 1
    Ultimo Post: 30-06-2005, 17:11