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
	

// 
	

}