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.