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

    Inserimento elementi nel vettore

    Ciao a tutti,

    sto realizzando una classe archivio che descrive una collezione di dizionari con vari metodi per l'inserimento, la rimozione e la ricerca nel dizionario.

    Tuttavia il metodo per l'inserimento mi restituisce "null" come risultato e non capisco perché, errori non ce ne sono...

    Qualcuno mi può correggere il codice e spiegarmi perché nn va bene?

    Grazie mille

    classe Archivio
    codice:
    import java.util.Vector;
    
    
    public class Archivio {
    
    private static Vector <Dizionario> archivioDizionari = new Vector<Dizionario>();
    	
    
    	/**
    	 * Costruttore
    	 */
    	
    	
    	public Archivio(){
    		this.archivioDizionari=archivioDizionari;
    	
    	
    	}
    	
    	
    	
    	public static void main(String[] args) {
         
    		
    	
    		
    
    		
    		
    		char scelta;
    	
    		// ciclo principale
    		
    		do{
    		scelta=menuPrincipale();
    		
    		switch(scelta){
    		case 'V':
    		case'v': visualizzaDizionario ();break;
    		case 'S':
    		case's': selezioneDizionario();break;
    		case 'I':
    		case'i': inserimentoDizionario (nuovoDizionario);break;
    		case 'C':
    		case'c': rimozioneDizionario ();break;
    		}
    		
    	}while(scelta!='e' && scelta!='E');
    	System.out.println("\nBye!");
    	
    	}	
    	
    	
    	// metodo che carica il menu principale
    	public static char menuPrincipale(){
    	
    		String ok="VvIiCcRrSsUueE";
    		
    		
    		char scelta;
    		
    		do{
    			
    			System.out.println("|| MENU' PRINCIPALE ||");
    			System.out.println("");
    			System.out.println("[V/v] Visualizza i dizionari");
    			System.out.println("[S/s] Seleziona un  dizionario");
    			System.out.println("[I/i] Inserisci un nuovo dizionario");
    			System.out.println("[C/c] Rimuovi un dizionario");
    			System.out.println("[R/r] Esegui una ricerca");
    			System.out.println("[S/s] Salva la collezione di dizionari ");
    			System.out.println("[U/u] Fai l'upload di una nuova collezione");	
    			System.out.println("[e/E] Arrivederci!");	
    			System.out.println("");
    			scelta=Input.readChar("fai la tua scelta:");
    			
    			
    			
    		}while(ok.indexOf(scelta)<0);
    	return scelta;
    		}	
    	
    
    // metodo per la selezione del dizionario
    	 public static void selezioneDizionario(){
    	    
    		 if(archivioDizionari.isEmpty()==true){
    			 System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
    			 menuPrincipale();
    		 }
    		 else{
    			 String nome=Input.readString("Inserisci il nome del dizionario da cercare:");
    			 ricercaNome(archivioDizionari,nome);
    			 menuDizionario();
    			 
    		 }
    		 
    	        }
    	
    	//metodo per la visualizzazione dei dizionari
    	 
    	 public static void visualizzaDizionario(){ 
    		 if(archivioDizionari.isEmpty()==true){
    			 System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
    			 menuPrincipale();
    		 }
    		 else{
    		 for(int pos=0; pos<=archivioDizionari.size();pos++)	
    			 System.out.print(archivioDizionari.indexOf(pos)+" "+archivioDizionari.get(pos).getNomeDizionario());
    		 menuPrincipale();
    		 
    		 
    		 
    	 }   } 
    	 
    	// metodo per ricerca per nome
    	  public static boolean ricercaNome(Vector <Dizionario> archivioDizionari, String nome){
    	    	
    	    	boolean nonTrovato=true;
    	        for(int i=0; i<archivioDizionari.size() && nonTrovato; i++){
    	            Dizionario d=archivioDizionari.elementAt(i);
    	            
    	            if(d.getNomeDizionario().equals(nome.trim())){
                  
    	            	
                      nome=d.getNomeDizionario();
    	            }
    	        }
    	        if(nonTrovato){
    	            System.out.println("Parola non trovata!");
    	        }
    			return nonTrovato;
    	 
    	    }               
    	
    	
    // metodo per l'inserimento di un dizionario
    	public static boolean inserimento(int pos, Dizionario nuovoDizionario){ 
    		
    			
    		if(pos<0 || pos> archivioDizionari.size() ||archivioDizionari==null)	{ 
    
    		       return false;
    			}
    
    			else	{ 
    				
    			
    
    				archivioDizionari.add(pos, nuovoDizionario);
    				
    			     return true;
    				}
    	}
    	
    	// metodo statico per l'inserimento di un dizionario
    	
    	public static void inserimentoDizionario(Vector <archivioDizionari> nuovoDizionario){ // metodo statico per l'inserimento
    		
    		int pos=Input.readInt("Dammi una posizione valida: ");
    		
    		while (pos<0 || pos> archivioDizionari.size() ||archivioDizionari==null)	{ 
    
    	
    			
    			
        	nuovoDizionario=Dizionario.leggiDizionario();
    				
    			inserimento(pos, nuovoDizionario);
    			  System.out.println(nuovoDizionario.getNomeDizionario());
    
    			     menuPrincipale();
    			   
    				}
    		
    	}		
    	
    			
    // metodo per la selezione del dizionario
    
    	
    // metodo per la rimozione di un dizionario		
    	public static void rimozioneDizionario(){
    	    
    		 if(archivioDizionari.isEmpty()==true){
    			 System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
    			 menuPrincipale();
    		 }
    		 else {
    			 String nome=Input.readString("Inserisci il nome del dizionario da cercare:");
    			 ricercaNome(archivioDizionari,nome);
    			 System.out.println();
    			 char opz=Input.readChar("Sei sicuro di voler rimuovere il dizionario"+nome+"? s/n");
    			 if(opz=='s'){
    			 archivioDizionari.remove(nome);
    			 System.out.println("Hai rimosso il dizionario");
    			 menuPrincipale();
    			 }
    			 
    			 else{System.out.println("Non hai rimosso il dizionario, torna al menù principale");
    			 menuPrincipale();}
    		 }
    		 
    	        }	
    	
    // metodo menu dizionario
    	public static char menuDizionario(){
    		
    		String ok="AaCcRrVveE";
    		
    		
    		char sceltaDizionario;
    		
    		do{
    			
    			System.out.println("|| MENU' DEL DIZIONARIO ||");
    			System.out.println("");
    			System.out.println("[A/a] Aggiungi un nuovo lemma");
    			System.out.println("[C/c] Rimuovi un lemma");
    			System.out.println("[R/r] Esegui una ricerca");
    			System.out.println("[V/v] Visualizza la lista dei lemmi");
    			
    			System.out.println("[e/E] Arrivederci!");	
    			
    			sceltaDizionario=Input.readChar("fai la tua scelta:");
    			
    			
    			
    		}while(ok.indexOf(sceltaDizionario)<0);
    	return sceltaDizionario;
    		}	
    	
    	
    	
    // metodo inserimento lemmi
    
    // metodo visualizza lemmi
    
    // metodo rimozione lemmi
    	
    // metodo menu ricerca lemmi
    
    	public static void cicloRicerca(){	
    	
    	String nome=Input.readString("Inserisci il nome del dizionario desiderato:");
    	
    
    		
    	char scelta;
    
    	// ciclo principale
    	if(ricercaNome(archivioDizionari, nome)){
    	do{
    	scelta=menuLemmaRicerca();
    	
    	switch(scelta){
    	case 'L':
    	case'l': ;break;
    	case 'N':
    	case'n':;break;
    	case 'D':
    	case'd':;break;
    	case 'S':
    	case's':;break;
    	case 'C':
    	case'c':;break;
    	case 'E':
    	case'e':;break;
    	}
    	
    }while(scelta!='e' && scelta!='E');
    System.out.println("\nBye!");
    
    }
    	
    }
    
    	
    	
    	public static char menuLemmaRicerca(){
    		
    		String ok="LlTtDdSsCceE";
    		
    		
    		char cerca;
    		
    		do{
    			
    			System.out.println("|| OPZIONI DI RICERCA ||");
    			System.out.println("");
    			System.out.println("[L/l] Cerca per lingua");
    			System.out.println("[N/n] Cerca per nome");
    			System.out.println("[D/d] Cerca per descrizione");
    			System.out.println("[S/s] Cerca per sinonimo");
    			System.out.println("[C/c] Cerca per contrario");
    			System.out.println("[e/E] Arrivederci!");	
    			
    			cerca=Input.readChar("fai la tua scelta:");
    			
    			
    			
    		}while(ok.indexOf(cerca)<0);
    	return cerca;
    		}	
    // ricerca nome lemma
    	
    	public static void ricercaLemmaDizionario(Dizionario nuovoDizionario,String parola){
    		
    	
    		
    		
    		
    	}
    	
    	
    	
    	
    // ricerca descrizione lemma
    
    // ricerca sinonimi lemma
    
    // ricerca contrari lemma
    	
    // ricerca lingua lemma
    
    public  Vector<Dizionario> ricercaLingua(String lingua){ // da utilizzare per ricerche multiple(Ë il risulatato della ricerca come vettore che puÚ essere utilizzato per filtrare ulterioremnete i risultati)
    	return ricercaLingua(archivioDizionari,lingua);
    }
    
    
    public static Vector ricercaLingua(Vector <Dizionario> archivioDizionari, String lingua){
    	Vector<Dizionario> vettoreLingua = new Vector<Dizionario>();
    	boolean nonTrovato=true;
        for(int i=0; i<archivioDizionari.size() && nonTrovato; i++){
            Dizionario d=archivioDizionari.elementAt(i);
            
            if(d.getNomeDizionario().equals(lingua.trim())){
          
            	
              lingua=d.getLinguaDizionario();
              // stampa la lista dei dizionari con quella lingua
              
            }
        }
        if(nonTrovato){
            System.out.println("Non ci sono dizionari in lingua"+" "+lingua+"torna al menu principale ");menuPrincipale();
        }
    	return vettoreLingua;
    
    }           
    	
    // menu filtra ricerche
    
    	
    // metodo per il salvataggio
    	
    // metodo per l'upload
    	
    
    // 
    	
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se quello è tutto il codice della classe, allora non compila nemmeno. Nel main, dentro al costrutto switch() trovo scritto:

    codice:
    case'i': inserimentoDizionario (nuovoDizionario);break;
    Ma non hai dichiarato da nessuna parte una variabile "nuovoDizionario" che tenti di passare al metodo (almeno non l'ho visto né dentro al metodo main, né a livello di classe, a meno che non mi sia sfuggito). Ho capito che quell'oggetto lo vuoi istanziare dentro al metodo... ma non puoi farlo apparire dal nulla, senza alcuna dichiarazione.


    Quindi, apparentemente, l'errore è proprio lì. Ma non è il metodo a restituire "null", è la compilazione che non va a buon fine, perchè non hai dichiarato da nessuna parte quell'oggetto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ciao,

    continua a non funzionare e mi dà l'errore:

    Exception in thread "main" java.lang.NullPointerException
    at Archivio.inserimento(Archivio.java:168)
    at Archivio.inserimentoDizionario(Archivio.java:183)
    at Archivio.main(Archivio.java:53)


    ma non riesco a capire cosa non va

    riposto il codice della classe e quello della classe Dizionario (dove avviene l'input testuale)
    codice:
    import java.io.*;
    import java.util.List;
    import java.util.Vector;
    
    
    public class Archivio implements Serializable{
    
    private  Vector <Dizionario> archivioDizionari;
    	
    
    	/**
    	 * Costruttore
    	 */
    	
    	
    	
    	public Archivio(int pos,String nomeDiz, String linguaInserita, Vector<Lemma> listaLemmi) {
    		
    		Dizionario nuovoDizionario = new Dizionario(nomeDiz, linguaInserita, listaLemmi);
    		archivioDizionari = new Vector<Dizionario>();
    		archivioDizionari.add(pos,nuovoDizionario);
    	}
    
    	
    	
    	public Archivio(){
    	}
    
    	
    	
    	public static void main(String[] args) {
         
    	
    	Archivio listaDizionari=new Archivio();	
    
    		
    		
    		char scelta;
    	
    		// ciclo principale
    		
    		do{
    		scelta=menuPrincipale();
    		
    		switch(scelta){
    		case 'V':
    		case'v': 
    		case 'S':
    		case's': selezioneDizionario(listaDizionari);break;
    		case 'I':
    		case'i': inserimentoDizionario(listaDizionari);
    		case 'C':
    		case'c': rimozioneDizionario ();break;
    		case 'Z':
    		case'z': ;break;
    		}
    		
    	}while(scelta!='e' && scelta!='E');
    	System.out.println("\nBye!");
    	
    	}	
    	
    	
    	// metodo che carica il menu principale
    	public static char menuPrincipale(){
    	
    		String ok="VvIiCcRrSsUueE";
    		
    		
    		char scelta;
    		
    		do{
    			
    			System.out.println("|| MENU' PRINCIPALE ||");
    			System.out.println("");
    			System.out.println("[V/v] Visualizza i dizionari");
    			System.out.println("[S/s] Seleziona un  dizionario");
    			System.out.println("[I/i] Inserisci un nuovo dizionario");
    			System.out.println("[C/c] Rimuovi un dizionario");
    			System.out.println("[R/r] Esegui una ricerca");
    			System.out.println("[S/s] Salva la collezione di dizionari ");
    			System.out.println("[U/u] Fai l'upload di una nuova collezione");	
    			System.out.println("[e/E] Arrivederci!");	
    			System.out.println("");
    			scelta=Input.readChar("fai la tua scelta:");
    			
    			
    			
    		}while(ok.indexOf(scelta)<0);
    	return scelta;
    		}	
    	
    
    // metodo per la selezione del dizionario
    	
    	public static void selezioneDizionario(Archivio listaDizionari){
           listaDizionari.selezioneDizionario(listaDizionari);
    	 }
    	
    	
    	public  void selezione(){
    	    
    		 if(archivioDizionari.isEmpty()==true){
    			 System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
    			 menuPrincipale();
    		 }
    		 else{
    			 String nome=Input.readString("Inserisci il nome del dizionario da cercare:");
    			 ricercaNome(archivioDizionari,nome);
    			 menuDizionario();
    			 
    		 }
    		 
    	        }
    	
    	//metodo per la visualizzazione dei dizionari
    	 
    	 public  void visualizzaDizionario(){ 
    		 if(archivioDizionari.isEmpty()==true){
    			 System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
    			 menuPrincipale();
    		 }
    		 else{
    		 for(int pos=0; pos<=archivioDizionari.size();pos++)	
    			 System.out.print(archivioDizionari.indexOf(pos)+" "+archivioDizionari.get(pos).getNomeDizionario());
    		 menuPrincipale();
    		 
    		 
    		 
    	 }   } 
    	 
    	// metodo per ricerca per nome
    	  public static boolean ricercaNome(Vector <Dizionario> archivioDizionari, String nome){
    	    	
    	    	boolean nonTrovato=true;
    	        for(int i=0; i<archivioDizionari.size() && nonTrovato; i++){
    	            Dizionario d=archivioDizionari.elementAt(i);
    	            
    	            if(d.getNomeDizionario().equals(nome.trim())){
                  
    	            	
                      nome=d.getNomeDizionario();
    	            }
    	        }
    	        if(nonTrovato){
    	            System.out.println("Parola non trovata!");
    	        }
    			return nonTrovato;
    	 
    	    }               
    	
    	
    // metodo per l'inserimento di un dizionario
    	public  void inserimento(Dizionario nuovoDizionario){ 
    		
    			
    		/*if(pos<0 || pos>archivioDizionari.size() ||nuovoDizionario==null)	{ 
    
    		       return false;
    			}
    
    			else	{ 
    				
    			
    */
    				archivioDizionari.add(nuovoDizionario);
    				
    			  
    	}
    	
    	// metodo statico per l'inserimento di un dizionario
    	
    	public static  void inserimentoDizionario( Archivio listaDizionari){ 
    		
    		int pos=Input.readInt("Dammi una posizione valida: ");
    		
    		
    			
        	Dizionario nuovoDizionario=Dizionario.leggiDizionario();
    				
        listaDizionari.inserimento(nuovoDizionario);
    			  System.out.println(nuovoDizionario.getNomeDizionario());
    
    			     menuPrincipale();
    			   
    				}

    classe Dizionario (lettura dei dati in input)


    codice:
    public static Dizionario leggiDizionario(){
    		 char uscita; 
    		String nomeDiz="";
    	        boolean controllo=true;
    	        do{
    	            nomeDiz=Input.readString("Inserisci il nome: ").toLowerCase().trim();
    	            controllo=controlla(nomeDiz);
    	            if(controllo){
    	                System.out.println("Procedi!");
    	            }else{
    	                System.out.println("Errore!");
    	            }
    	        }while(!controllo);
    	        
    	        
    	    String linguaInserita="";
    	    
    	        do{
                    linguaInserita=Input.readString("Inserisci la lingua: ").toLowerCase().trim();
    	            controllo=controlla(linguaInserita);
    	            if(controllo){
    	                System.out.println("Procedi!");
    	            }else{
    	                System.out.println("Errore!");
    	            }
    	        }while(!controllo);
    	        
    	        Vector<Lemma> listaLemmi = new Vector<Lemma>();
    	      
    	        do {
    	        	Lemma nuovolemma=Lemma.leggiLemma();
    	        	listaLemmi.add(nuovolemma);//legge un lemma
    	        	
    	 	        	// lo inserisce in lemmi
    	        	uscita=Input.readChar("Vuoi inserire un nuovo dizionario? s/n:");
    	        	// e continua fino a quando si decide di smettere
    	        	
    		        
    	        } while(!controllo || uscita!='n');
    	        
    	        
    	     // ordina il vettore di lemmi prima di creare l'oggetto dizionario
    			return new Dizionario(nomeDiz,linguaInserita,listaLemmi);
    	        
    	        
    		
    		
    		
    	}

  4. #4
    Che istruzione hai a questa riga ?
    Archivio.inserimento(Archivio.java:168)

  5. #5
    Ecco l'istruzione


    codice:
    				archivioDizionari.add(nuovoDizionario);

    Mi puoi spiegare perché non funziona e darmi una soluzione?

    Grazie infinite

  6. #6
    Se la riga è quella allora ci sono poche cose da vedere :
    archivioDizionari non è stato inizializzato cioè non hai creato tale vector.

  7. #7
    Il programma continua a non compilare e non capisco perché


    Aiuto!

    codice:
    import java.io.*;
    import java.util.List;
    import java.util.Vector;
    
    
    public class Archivio implements Serializable{
    
    private Vector <Dizionario> archivioDizionari=new Vector<Dizionario>();
    	
    
    	
    	
    	
    	
    	
    
    	
    	
    	public Archivio(){
    		Dizionario nuovoDizionario=new Dizionario();
    		Vector <Dizionario> archivioDizionari = new Vector<Dizionario>();
    		archivioDizionari.add(nuovoDizionario);
    	}
    
    	
    	
    	public static void main(String[] args) {
         
    	
    	Archivio listaDizionari=new Archivio();	
    
    		
    		
    		char scelta;
    	
    		// ciclo principale
    		
    		do{
    		scelta=menuPrincipale();
    		
    		switch(scelta){
    		case 'V':
    		case'v': 
    		case 'S':
    		case's': selezioneDizionario(listaDizionari);break;
    		case 'I':
    		case'i': inserimentoDizionario(listaDizionari);
    		case 'C':
    		case'c': rimozioneDizionario ();break;
    		case 'Z':
    		case'z': ;break;
    		}
    		
    	}while(scelta!='e' && scelta!='E');
    	System.out.println("\nBye!");
    	
    	}	
    	
    	
    	// metodo che carica il menu principale
    	public static char menuPrincipale(){
    	
    		String ok="VvIiCcRrSsUueE";
    		
    		
    		char scelta;
    		
    		do{
    			
    			System.out.println("|| MENU' PRINCIPALE ||");
    			System.out.println("");
    			System.out.println("[V/v] Visualizza i dizionari");
    			System.out.println("[S/s] Seleziona un  dizionario");
    			System.out.println("[I/i] Inserisci un nuovo dizionario");
    			System.out.println("[C/c] Rimuovi un dizionario");
    			System.out.println("[R/r] Esegui una ricerca");
    			System.out.println("[S/s] Salva la collezione di dizionari ");
    			System.out.println("[U/u] Fai l'upload di una nuova collezione");	
    			System.out.println("[e/E] Arrivederci!");	
    			System.out.println("");
    			scelta=Input.readChar("fai la tua scelta:");
    			
    			
    			
    		}while(ok.indexOf(scelta)<0);
    	return scelta;
    		}	
    	
    
    // metodo per la selezione del dizionario
    	
    	public static void selezioneDizionario(Archivio listaDizionari){
           listaDizionari.selezioneDizionario(listaDizionari);
    	 }
    	
    	
    	public  void selezione(){
    	    
    		 if(archivioDizionari.isEmpty()==true){
    			 System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
    			 menuPrincipale();
    		 }
    		 else{
    			 String nome=Input.readString("Inserisci il nome del dizionario da cercare:");
    			 ricercaNome(archivioDizionari,nome);
    			 menuDizionario();
    			 
    		 }
    		 
    	        }
    	
    	//metodo per la visualizzazione dei dizionari
    	 
    	 public  void visualizzaDizionario(){ 
    		 if(archivioDizionari.isEmpty()==true){
    			 System.out.println("non ci sono dizionari, inserisci un nuovo dizionario");
    			 menuPrincipale();
    		 }
    		 else{
    		 for(int pos=0; pos<=archivioDizionari.size();pos++)	
    			 System.out.print(archivioDizionari.indexOf(pos)+" "+archivioDizionari.get(pos).getNomeDizionario());
    		 menuPrincipale();
    		 
    		 
    		 
    	 }   } 
    	 
    	// metodo per ricerca per nome
    	  public static boolean ricercaNome(Vector <Dizionario> archivioDizionari, String nome){
    	    	
    	    	boolean nonTrovato=true;
    	        for(int i=0; i<archivioDizionari.size() && nonTrovato; i++){
    	            Dizionario d=archivioDizionari.elementAt(i);
    	            
    	            if(d.getNomeDizionario().equals(nome.trim())){
                  
    	            	
                      nome=d.getNomeDizionario();
    	            }
    	        }
    	        if(nonTrovato){
    	            System.out.println("Parola non trovata!");
    	        }
    			return nonTrovato;
    	 
    	    }               
    	
    	
    // metodo per l'inserimento di un dizionario
    	public void inserimento(Dizionario nuovoDizionario){ 
    		
    			
    		/*if(pos<0 || pos>archivioDizionari.size() ||nuovoDizionario==null)	{ 
    
    		       return false;
    			}
    
    			else	{ 
    				
    			
    */
    				listaDizionari.add(nuovoDizionario);
    				
    			  
    	}
    	
    	// metodo statico per l'inserimento di un dizionario
    	
    	public static  void inserimentoDizionario( Archivio listaDizionari){ 
    		
    		int pos=Input.readInt("Dammi una posizione valida: ");
    		
    		
    			
        	Dizionario nuovoDizionario=Dizionario.leggiDizionario();
    				
        listaDizionari.archivioDizionari.add(nuovoDizionario);
    			  System.out.println(nuovoDizionario.getNomeDizionario());
    
    			     menuPrincipale();
    			   
    				}

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sì, ma non puoi limitarti a dire "continua a non compilare" e poi postare tutto il codice.
    Specifica esattamente quali sono gli errori che il compilatore ti segnala.

    Il compilatore, se trova degli errori, te li indica tutti, con un messaggio ben preciso, compreso il nome del file e la riga in cui trova l'errore.

    Posta queste informazioni, che sono essenziali, se proprio non vuoi nemmeno tentare di capire quale sia il problema, altrimenti non si va da nessuna parte: qui nessuno ha la sfera di cristallo e nemmeno ha tempo e possibilità di copiarsi, incollarsi e compilare il tuo codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Hai ragione,

    ecco gli errori che mi segnala...

    Exception in thread "main" java.lang.NullPointerException
    at Archivio.inserimentoDizionario(Archivio.java:181)
    at Archivio.main(Archivio.java:54)


    e la riga di codice relativa


    codice:
    	listaDizionari.inserimento(nuovoDizionario);
    Il solito errore me lo aveva già dato prima e mi era stato detto di creare il vettore archivioDizionari.

    Tuttavia l'ho fatto ma il problema non si risolve



    codice:
    import java.io.*;
    import java.util.List;
    import java.util.Vector;
    
    
    public class Archivio implements Serializable{
    
    private static Vector <Dizionario> archivioDizionari;
    	
    
    	
    	
    	
    	
    	
    
    	
    	
    	public Archivio(Vector <Dizionario> archivioDizionari){
    		
    		archivioDizionari=new Vector<Dizionario>();
    	}
    
    
    	
    	public Archivio() {
    		// TODO Auto-generated constructor stub
    	}
    
    
    
    	public static void main(String[] args) {
         
    	
    Dizionario nuovoDizionario=new Dizionario();
    Forse ho sbagliato la dichiarazione?

    Grazie

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Direi di sì.
    Hai due costruttori, nessuno dei quali inizializza l'oggetto di classe.

    Il primo costruttore prende un parametro: un oggetto Vector<Dizionario> come parametro e inizializza quello (il nome del parametro è lo stesso dell'oggetto di classe, quindi il primo "nasconde" quello più esterno)

    Il secondo costruttore (Auto-generated) non fa assolutamente nulla.

    Non capisco perchè avere un costruttore che prende un parametro, se poi questo parametro lo vai a reinizializzare... forse volevi assegnarlo all'oggetto di classe, ma in questo caso si usa un'assegnazione e il reference "this". Quindi, modificherei in questo modo:

    codice:
    	public Archivio(Vector <Dizionario> archivioDizionari){
    		
    		this.archivioDizionari=archivioDizionari;
    	}
    
    
    	
    	public Archivio() {
    		archivioDizionari = new Vector<Dizionario>();
    	}
    PS: fossi in te comincerei dalle basi e abbandonerei per un attimo l'ambiente di sviluppo che stai usando... ti sta solo fuorviando. Usa un editor di testo (magari con il text-highlight, come TextPad) e la riga di comando per compilare, altrimenti non vai molto lontano.
    E' solo un consiglio, perchè vedo che hai delle forti lacune sui principi di base della OOP e questi strumenti (troppo avanzati) non sono d'aiuto agli inizi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.