Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    86

    java.lang.NullPointerException

    Salve ho le seguenti classi:
    Classe Stato
    codice:
    package mondo; 
    import java.io.Serializable; 
    public class Stato  implements  Serializable{ 	 	
    private static final long serialVersionUID = 1L; 	
    String nome = new String(); 	
    String capitale = new String(); 	
    long popolazione ;     
    double dimensione;     
    String[] lingue;    
     String[] confini;     	 }
    Classe Mappa
    codice:
    package mondo;  
    import java.util.Vector;   
    public abstract class Mappa<T> { 	 	
    private static final long serialVersionUID = 1L; 	
    Vector<Stato> sta = new Vector<Stato>();  	
    public abstract Vector<T> aggiungiStato(); }
    Classe ElencoStati
    codice:
    package mondo;  
     import java.util.Vector;  
    import javax.swing.JOptionPane;  
    public class ElencoStati extends Mappa<Stato>{ 	/** 	 *  	 */ 	
    private static final long serialVersionUID = 1L;    	
    public Vector<Stato> aggiungiStato() { 	 		
    String risp = new String("si"); 		 		
    while (risp.equals("si")) { 			
    Stato s = new Stato(); 			
    s.nome = JOptionPane.showInputDialog(null, "Inserire il nome dello stato: "); 			s.capitale = JOptionPane.showInputDialog(null,"Inserire la capitale dello stato:"); 			
    try{ 		
    s.popolazione=Long.parseLong(JOptionPane.showInputDialog(null, 					"Inserisci la popolazione: "));} 			
    catch(NumberFormatException e){ 				
    System.out.println("Valore non valido devi inserire un long"); 			} 			
    try{ 		        
    s.dimensione =Double.parseDouble(JOptionPane.showInputDialog(null, 				"Inserire la dimensione: "));} 			
    catch(NumberFormatException e1){ 				
    System.out.println("Valore non valido devi inserire un double"); 			}  			
    sta.add(s); 			
    risp = JOptionPane.showInputDialog(null, "Vuoi inserire un altro stato?(si/no) "); 			
    if (!(risp.equals("si"))) { 				
    System.out.println(); 			} 		} 		
    for (int i = 0; i < sta.size(); i++) { 			
    System.out.println(); 			
    System.out.println("Nome: " + ((Stato) sta.get(i)).nome); 			System.out.println("Capitale: " + ((Stato) sta.get(i)).capitale); 			System.out.println("Popolazione: " + ((Stato) sta.get(i)).popolazione); 			System.out.println("Dimensione: " + ((Stato) sta.get(i)).dimensione); 			System.out.println("Stati confinanti: " + ((Stato) sta.get(i)).confini); 		} 		return sta; 	}  
    	
    public void setConfine(Vector<Stato> sta) { 	
    String stato1 = new String(); 		
    String stato2 = new String(); 			
    stato1 = JOptionPane.showInputDialog(null, "Inserire il nome del primo stato: "); 			
    stato2 = JOptionPane.showInputDialog(null, "Inserire il nome del secondo stato "); 		
    if (!(sta.isEmpty())) { 			
    int i = 0; 		 			 				 					
    while(i<sta.size()){
    if(((String((Stato)sta.get(i)).nome).equalsIgnoreCase(stato1)) 					(((Stato)sta.set(i,null)).confini[i])=stato2;                          						else if
    (((String((Stato)sta.get(i)).nome).equalsIgnoreCase(stato2)) 					 (((Stato)sta.set(i,null)).confini[i])=stato1; 					 			
    if (i != sta.size())
    i++; 					 					} 				 					 			}  		 	}   	 }
    Classe Scelta
    codice:
    package mondo;
     import java.io.*;  
    import javax.swing.JOptionPane; import java.util.Vector;          
     public class Scelta {                             
      public static void main(String[] args){                        
     InputStreamReader isr=new InputStreamReader(System.in);             	 
     BufferedReader br=new BufferedReader(isr);             	 
     int selezione;             	  
    String line;             	 
     ElencoStati el =new ElencoStati();             	  
    Vector<Stato> sta = new Vector<Stato>();                       
      System.out.println("        MENU :seleziona l'operazione       ");     
    //MENU......
    //vari case.......
    case 5:                         	   el.setConfine(sta);                                                                       
     break;            } 		         }
    -quando memorizzo i confini di uno stato (setConfini) mi da java.lang.NullPointerException;
    Dovrei memorizzare nell'attributo confini di stato1 stato2 e nell'alltributo confini di stato2 stato1.

    Qualcuno può aiutarmi!!!!Grazie.

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Indentato (?) in questo modo, il codice è assolutamente illeggibile: non credo proprio che sul tuo editor di testi lo visualizzi così.
    Caricalo nuovamente in un formato comprensibile (prima di inviare un messaggio puoi verificarne il layout tramite il pulsante di "Anteprima") e proviamo a vedere cosa c'è che non va.
    Non sarebbe neanche male se postassi il messaggio e lo stacktrace dell'errore che ottieni e se inserissi un commento nel codice sulla riga dove ti viene segnalato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da desa
    Indentato (?) in questo modo, il codice è assolutamente illeggibile: non credo proprio che sul tuo editor di testi lo visualizzi così.
    Detto questo i capitoletti sui manuali che danno direttive sul layout del codice mica sbagliano, io il codice non indentato mi rifiuto di iniziare a leggerlo!!

    In generale (prima che arrivi la risposta), una NullPointerException indica qualcosa di non istanziato.
    Controlla se istanzi tutto quello che usi (buona norma cmq prima di postare)

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.