Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    5

    NullPointerException - Grafica

    Ciao a tutti, a scuola stiamo facendo grafica e oggi a casa, mentre tentavo di fare un programma, sono incappato in questo errore... Non capisco da cosa deriva però!

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class FinCanv extends Frame implements ActionListener{
    Persona a[]=new Persona[3];
    Panel p1=new Panel();
    Panel p2=new Panel();
    Panel p3=new Panel();
    Panel p4=new Panel();
    private TextField nome=new TextField(15);
    private TextField cognome=new TextField(15);
    private Button b=new Button("Visualizza info");
    private Choice codF=new Choice();
    public FinCanv(){
    	super("Visualizza info");
    	addWindowListener(new GestoreFinestra());
    	p1.add(new Label("Nome"));
    	p1.add(nome);
    	p2.add(new Label("Cognome"));
    	p2.add(cognome);
    	p3.add(b);
    	p4.add(codF);
    	setLayout(new GridLayout(3,2,5,10));
    	add(p1);
    	add(p2);
    	add(p3);
    	add(p4);
    	b.addActionListener(this);
    	for(int i=0;i<3;i++){
    		a[i].setNome(JOptionPane.showInputDialog("Inserisci nome"));
    		a[i].setCognome(JOptionPane.showInputDialog("Inserisci cognome"));
    		a[i].setCod(JOptionPane.showInputDialog("Inserisci codice fiscale"));
    		}
    	inCombo();
    }
    public void inCombo(){
    	for(int i=0;i<3;i++){
    		codF.addItem(a[i].getCod());
    		}
    }
    
    public void actionPerformed(ActionEvent e) {
    	String z=e.getActionCommand();
    	String c,b;
    	if(z.equals("Visualizza info")){
    		switch(codF.getSelectedIndex()){
    		case 0:
    			c=a[0].getNome();
    			nome.setText(c);
    			b=a[0].getCognome();
    			cognome.setText(b);
    			break;
    		case 1:
    			c=a[1].getNome();
    			nome.setText(c);
    			b=a[1].getCognome();
    			cognome.setText(b);
    			break;
    		case 2:
    			c=a[2].getNome();
    			nome.setText(c);
    			b=a[2].getCognome();
    			cognome.setText(b);
    			break;
    		}
    	}
    }
    }
    
    -------- main -------
    
    public class Principale{
    
    	public static void main(String[] args) {
    		FinCanv f=new FinCanv();
    		f.pack();
    		f.setVisible(true);
    	}
    
    }
    e questo è il codice dell'errore!

    codice:
    Exception in thread "main" java.lang.NullPointerException
    	at FinCanv.<init>(FinCanv.java:30)
    	at Principale.main(Principale.java:5)
    Grazie a tutti per l'aiuto!

  2. #2

    Ops non è javascript!!!

    Hai sbagliato sezione!!!!

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La prossima volta indica nel codice qual è la riga incriminata

    Venendo al tuo problema: non hai istanziato i singoli elementi dell'array a (e se ragioni sull'eccezione che ottieni, capisci il perché dell'errore). Riguarda il ciclo for nel costruttore.

    ps1: usa dei nomi decenti: a, b, c, p1, p2, ecc sono nomi orrendi che non vogliono dire assolutamente nulla e rendono il codice difficile da leggere.
    ps2: non cablare nel codice il numero di iterazioni di un ciclo. Ad esempio, non mettere i < 3 ma metti i < a.length. Cosa succede altrimenti se aggiungi un quarto elemento all'array?
    ps3: ci sono comunque altre cose che non mi piacciono per niente (miscuglio awt/swing ecc)

    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    5
    Grazie per la risposta.

    Chiedo scusa per la sezione errata!!!!!!!

    Per i metodi set/get di "Nome" - "Cognome" - "Codice fiscale" ho creato la classe Persona! In cui le tre variabile sono dichiarate private.
    Per il ciclo for ho inserito il 3 io, di solito passo n come dimensione e poi la faccio inserire dall'utente.
    Sono abbastanza alle prime armi, se puoi darmi un aiutino te ne sarò grato per sempre

    Ah, le righe incriminate sono FinCanv f=new FinCanv(); e inCombo();

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Walkman
    Per il ciclo for ho inserito il 3 io, di solito passo n come dimensione e poi la faccio inserire dall'utente.
    Questo va bene quando istanzi l'array, non quando te lo porti in giro. Cosa fai, insieme all'array ti porti dietro anche n? Soprattutto quando l'array stesso ha già l'informazione di quanti elementi contiene, il campo length



    Originariamente inviato da Walkman
    Sono abbastanza alle prime armi, se puoi darmi un aiutino te ne sarò grato per sempre
    Ah, le righe incriminate sono FinCanv f=new FinCanv(); e inCombo();
    Ti ho già detto cosa c'è che non va:

    Originariamente inviato da Alex'87
    Venendo al tuo problema: non hai istanziato i singoli elementi dell'array a (e se ragioni sull'eccezione che ottieni, capisci il perché dell'errore). Riguarda il ciclo for nel costruttore.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    5
    Scusa la mia immensa ignoranza... Ma non l'ho istanziato qui?

    codice:
    Persona [a]=new Persona[3];

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Walkman
    Scusa la mia immensa ignoranza... Ma non l'ho istanziato qui?

    codice:
    Persona [a]=new Persona[3];
    Con

    Persona[] a = new Persona[3];

    istanzi l'array ma i suoi elementi sono ancora tutti a null.
    Ergo, quando fai a[0].qualcosa avrai NullPointerException.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    5
    Ok ho capito, grazie mille!!!

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.