Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema eccezione in un programma

    ciao a tutti,
    ho scritto un programma in java con interfaccia grafica che genera stringhe casuali, e il compilatore non da errori, ma quando lo eseguo e clicco sul pulsante genera esce un'eccezione:
    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at StringaCasuale$Genera.actionPerformed(StringaCasuale.java:183)
            at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
            at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
            at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
            at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
            at java.awt.Component.processMouseEvent(Unknown Source)
            at javax.swing.JComponent.processMouseEvent(Unknown Source)
            at java.awt.Component.processEvent(Unknown Source)
            at java.awt.Container.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
            at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
            at java.awt.Container.dispatchEventImpl(Unknown Source)
            at java.awt.Window.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    questo è il programma (so che è un po lungo da esaminare, ma per favore dateci un'occhiata...) comunque il problema dovrebbe essere nell'ascoltatore (evidenziato in rosso)
    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class StringaCasuale extends JFrame
    {
    	JLabel title=new JLabel("GENERATORE DI STRINGHE CASUALI");
    	JLabel tlunghezza=new JLabel("Lunghezza della stringa");
    	JLabel max=new JLabel("Massima");
    	TextField gmaxlen=new TextField("32",2);
    	JLabel min=new JLabel("Minima");
    	TextField gminlen=new TextField("32",2);
    	JLabel ecaratteri=new JLabel("Caratteri che potranno essere utilizzati nella stringa                                                            ");
    	JCheckBox maiuscole=new JCheckBox("Lettere maiuscole",false);
    	JCheckBox minuscole=new JCheckBox("Lettere minuscole",true);
    	JCheckBox numeri=new JCheckBox("Numeri",true);
    	JCheckBox speciali=new JCheckBox("Caratteri speciali  (!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|})",false);
    	JCheckBox spazio=new JCheckBox("Spazio",false);
    	JCheckBox personalizzato=new JCheckBox("Aggiungi alla selezione i seguenti caratteri:",false);
    	TextField tpersonalizzato=new TextField(30);
    	JButton genera=new JButton("Genera");
    	TextField gout=new TextField(59);
    	
    	public StringaCasuale()
    	{		
    		//Dichiarazione proprietà finestra
    		setTitle("Generatore di stringhe casuali (ASCII, Codifica non estesa)");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setLocation(100,100);
    		setSize(540,350);
    		setVisible(true);
    		setResizable(false);
    		
    		//Definizione layout
    		GridBagLayout layout=new GridBagLayout();
    		GridBagConstraints lim=new GridBagConstraints();
    		getContentPane().setLayout(layout);
    		
    		//Titolo
    		lim.gridx=0;
    		lim.gridy=0;
    		layout.setConstraints(title,lim);
    		add(title);
    		
    		//Etichetta lunghezza stringa
    		lim.gridx=0;
    		lim.gridy=1;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(tlunghezza,lim);
    		add(tlunghezza);
    		
    		//Etichetta lunghezza massima
    		lim.gridx=0;
    		lim.gridy=2;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(max,lim);
    		add(max);
    		
    		//Campo lunghezza massima
    		lim.gridx=0;
    		lim.gridy=2;
    		lim.anchor=GridBagConstraints.CENTER;
    		layout.setConstraints(gmaxlen,lim);
    		add(gmaxlen);
    		
    		//Etichetta lunghezza minima
    		lim.gridx=0;
    		lim.gridy=3;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(min,lim);
    		add(min);
    		
    		//Campo lunghezza minima
    		lim.gridx=0;
    		lim.gridy=3;
    		lim.anchor=GridBagConstraints.CENTER;
    		layout.setConstraints(gminlen,lim);
    		add(gminlen);
    		
    		//Separatore 1
    		Label s1=new Label("________________________________________________________________________");
    		lim.gridx=0;
    		lim.gridy=4;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(s1,lim);
    		add(s1);
    		
    		//Etichetta caratteri
    		lim.gridx=0;
    		lim.gridy=5;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(ecaratteri,lim);
    		add(ecaratteri);
    		
    		//Numeri
    		lim.gridx=0;
    		lim.gridy=6;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(numeri,lim);
    		add(numeri);
    		
    		//Lettere minuscole
    		lim.gridx=0;
    		lim.gridy=7;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(minuscole,lim);
    		add(minuscole);
    		
    		//Lettere maiuscole
    		lim.gridx=0;
    		lim.gridy=8;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(maiuscole,lim);
    		add(maiuscole);
    		
    		//Caratteri speciali
    		lim.gridx=0;
    		lim.gridy=9;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(speciali,lim);
    		add(speciali);
    		
    		//Spazio
    		lim.gridx=0;
    		lim.gridy=10;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(spazio,lim);
    		add(spazio);
    		
    		//Personalizzato
    		lim.gridx=0;
    		lim.gridy=11;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(personalizzato,lim);
    		add(personalizzato);
    		
    		//Testo personalizzato
    		lim.gridx=0;
    		lim.gridy=11;
    		lim.anchor=GridBagConstraints.EAST;
    		layout.setConstraints(tpersonalizzato,lim);
    		add(tpersonalizzato);
    		
    		//Separatore 2
    		Label s2=new Label("________________________________________________________________________");
    		lim.gridx=0;
    		lim.gridy=12;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(s2,lim);
    		add(s2);
    		
    		//Pulsante Genera
    		genera.addActionListener(new Genera());
    		lim.gridx=0;
    		lim.gridy=13;
    		lim.anchor=GridBagConstraints.EAST;
    		layout.setConstraints(genera,lim);
    		add(genera);
    		
    		//Output
    		gout.setEditable(false);
    		lim.gridx=0;
    		lim.gridy=13;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(gout,lim);
    		add(gout);
    	}
    	public class Genera implements ActionListener
    	{
    		public void actionPerformed(ActionEvent evt)
    		{
    			int max_lenght=Integer.parseInt(gmaxlen.getText());
    			int min_lenght=Integer.parseInt(gminlen.getText());
    			String src=null;
    			if(numeri.isSelected()){src="0123456789";}
    			if(minuscole.isSelected()){src=src+"abcdefghijklmnopqrstuvwxyz";}
    			if(maiuscole.isSelected()){src=src+"ABCDEFGHIJKLMNOPQRSTUVWXYZ";}
    			if(speciali.isSelected()){src=src+"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}";}
    			if(spazio.isSelected()){src=src+" ";}
    			if(personalizzato.isSelected()){src=src+tpersonalizzato.getText();}
    			char[] src_array=null;
    			int iter;
    			for(iter=0;iter<src.length();iter++){
    				src_array[iter]=src.charAt(iter);
    			}
    			int out_lenght=(int)((max_lenght-min_lenght)*Math.random()+min_lenght);
    			int iter2;
    			int rand;
    			String out=null;
    			char rand_char;
    			String s_rand_char;
    			for(iter2=0;iter2<out_lenght;++iter2){
    				rand=(int)(Math.random()*src.length());
    				rand_char=src_array[rand];
    				s_rand_char=Character.toString(rand_char);
    				if(iter2==0){out=s_rand_char;}
    				else{out=out+s_rand_char;}
    			}
    			gout.setText(out);
    		}
    	}
    	public static void main(String[] args)
    	{
    		new StringaCasuale();
    	}
    }
    non sono molto esperto con java e non ho idea di dove andare a cercare l'errore...
    grazie a chiunque risponda ciao!!!

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La stack trace ti segnala che l'errore viene originato qui:

    at StringaCasuale$Genera.actionPerformed(StringaCasua le.java:183)

    Puoi evidenziare nel tuo codice questa riga?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    ok ecco qua.. riga 183 in rosso
    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class StringaCasuale extends JFrame
    {
    	JLabel title=new JLabel("GENERATORE DI STRINGHE CASUALI");
    	JLabel tlunghezza=new JLabel("Lunghezza della stringa");
    	JLabel max=new JLabel("Massima");
    	TextField gmaxlen=new TextField("32",2);
    	JLabel min=new JLabel("Minima");
    	TextField gminlen=new TextField("32",2);
    	JLabel ecaratteri=new JLabel("Caratteri che potranno essere utilizzati nella stringa                                                            ");
    	JCheckBox maiuscole=new JCheckBox("Lettere maiuscole",false);
    	JCheckBox minuscole=new JCheckBox("Lettere minuscole",true);
    	JCheckBox numeri=new JCheckBox("Numeri",true);
    	JCheckBox speciali=new JCheckBox("Caratteri speciali  (!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|})",false);
    	JCheckBox spazio=new JCheckBox("Spazio",false);
    	JCheckBox personalizzato=new JCheckBox("Aggiungi alla selezione i seguenti caratteri:",false);
    	TextField tpersonalizzato=new TextField(30);
    	JButton genera=new JButton("Genera");
    	TextField gout=new TextField(59);
    	
    	public StringaCasuale()
    	{		
    		//Dichiarazione proprietà finestra
    		setTitle("Generatore di stringhe casuali (ASCII, Codifica non estesa)");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setLocation(100,100);
    		setSize(540,350);
    		setVisible(true);
    		setResizable(false);
    		
    		//Definizione layout
    		GridBagLayout layout=new GridBagLayout();
    		GridBagConstraints lim=new GridBagConstraints();
    		getContentPane().setLayout(layout);
    		
    		//Titolo
    		lim.gridx=0;
    		lim.gridy=0;
    		layout.setConstraints(title,lim);
    		add(title);
    		
    		//Etichetta lunghezza stringa
    		lim.gridx=0;
    		lim.gridy=1;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(tlunghezza,lim);
    		add(tlunghezza);
    		
    		//Etichetta lunghezza massima
    		lim.gridx=0;
    		lim.gridy=2;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(max,lim);
    		add(max);
    		
    		//Campo lunghezza massima
    		lim.gridx=0;
    		lim.gridy=2;
    		lim.anchor=GridBagConstraints.CENTER;
    		layout.setConstraints(gmaxlen,lim);
    		add(gmaxlen);
    		
    		//Etichetta lunghezza minima
    		lim.gridx=0;
    		lim.gridy=3;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(min,lim);
    		add(min);
    		
    		//Campo lunghezza minima
    		lim.gridx=0;
    		lim.gridy=3;
    		lim.anchor=GridBagConstraints.CENTER;
    		layout.setConstraints(gminlen,lim);
    		add(gminlen);
    		
    		//Separatore 1
    		Label s1=new Label("________________________________________________________________________");
    		lim.gridx=0;
    		lim.gridy=4;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(s1,lim);
    		add(s1);
    		
    		//Etichetta caratteri
    		lim.gridx=0;
    		lim.gridy=5;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(ecaratteri,lim);
    		add(ecaratteri);
    		
    		//Numeri
    		lim.gridx=0;
    		lim.gridy=6;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(numeri,lim);
    		add(numeri);
    		
    		//Lettere minuscole
    		lim.gridx=0;
    		lim.gridy=7;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(minuscole,lim);
    		add(minuscole);
    		
    		//Lettere maiuscole
    		lim.gridx=0;
    		lim.gridy=8;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(maiuscole,lim);
    		add(maiuscole);
    		
    		//Caratteri speciali
    		lim.gridx=0;
    		lim.gridy=9;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(speciali,lim);
    		add(speciali);
    		
    		//Spazio
    		lim.gridx=0;
    		lim.gridy=10;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(spazio,lim);
    		add(spazio);
    		
    		//Personalizzato
    		lim.gridx=0;
    		lim.gridy=11;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(personalizzato,lim);
    		add(personalizzato);
    		
    		//Testo personalizzato
    		lim.gridx=0;
    		lim.gridy=11;
    		lim.anchor=GridBagConstraints.EAST;
    		layout.setConstraints(tpersonalizzato,lim);
    		add(tpersonalizzato);
    		
    		//Separatore 2
    		Label s2=new Label("________________________________________________________________________");
    		lim.gridx=0;
    		lim.gridy=12;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(s2,lim);
    		add(s2);
    		
    		//Pulsante Genera
    		genera.addActionListener(new Genera());
    		lim.gridx=0;
    		lim.gridy=13;
    		lim.anchor=GridBagConstraints.EAST;
    		layout.setConstraints(genera,lim);
    		add(genera);
    		
    		//Output
    		gout.setEditable(false);
    		lim.gridx=0;
    		lim.gridy=13;
    		lim.anchor=GridBagConstraints.WEST;
    		layout.setConstraints(gout,lim);
    		add(gout);
    	}
    	public class Genera implements ActionListener
    	{
    		public void actionPerformed(ActionEvent evt)
    		{
    			int max_lenght=Integer.parseInt(gmaxlen.getText());
    			int min_lenght=Integer.parseInt(gminlen.getText());
    			String src=null;
    			if(numeri.isSelected()){src="0123456789";}
    			if(minuscole.isSelected()){src=src+"abcdefghijklmnopqrstuvwxyz";}
    			if(maiuscole.isSelected()){src=src+"ABCDEFGHIJKLMNOPQRSTUVWXYZ";}
    			if(speciali.isSelected()){src=src+"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}";}
    			if(spazio.isSelected()){src=src+" ";}
    			if(personalizzato.isSelected()){src=src+tpersonalizzato.getText();}
    			char[] src_array=null;
    			int iter;
    			for(iter=0;iter<src.length();iter++){
    				src_array[iter]=src.charAt(iter);
    			}
    			int out_lenght=(int)((max_lenght-min_lenght)*Math.random()+min_lenght);
    			int iter2;
    			int rand;
    			String out=null;
    			char rand_char;
    			String s_rand_char;
    			for(iter2=0;iter2<out_lenght;++iter2){
    				rand=(int)(Math.random()*src.length());
    				rand_char=src_array[rand];
    				s_rand_char=Character.toString(rand_char);
    				if(iter2==0){out=s_rand_char;}
    				else{out=out+s_rand_char;}
    			}
    			gout.setText(out);
    		}
    	}
    	public static void main(String[] args)
    	{
    		new StringaCasuale();
    	}
    }
    grazie

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da furbostandby
    codice:
    			char[] src_array=null;
    			int iter;
    			for(iter=0;iter<src.length();iter++){
    				src_array[iter]=src.charAt(iter);
    			}
    src_array non è istanziato da alcuna parte! Quando fai src_array[iter] otterrai sempre una NullPointerException, indipendentemente dal valore di iter.

    Dichiara src_array così: char[] src_array = new char[src.length()];
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    ok 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.