Salve ho le seguenti classi:
Classe Stato
Classe Mappacodice: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 ElencoStaticodice: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 Sceltacodice: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++; } } } }
-quando memorizzo i confini di uno stato (setConfini) mi da java.lang.NullPointerException;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; } }
Dovrei memorizzare nell'attributo confini di stato1 stato2 e nell'alltributo confini di stato2 stato1.
Qualcuno può aiutarmi!!!!Grazie.

Rispondi quotando