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

    Inserire elementi nel vettore con metodi statici

    Salve a tutti,

    sto realizzando un programma che crea archivi di dizionari, ma ho un problema con l'inserimento di nuove voci nel dizionario, poiché al momento in cui provo ad inserire nuove voci nel dizionario selezionato dall'utente(la selezione va a buon fine), il programma mi restituisce "null".

    Ho provato diverse strade ma non sono riuscito a capire dove sta il problema .

    Potete aiutarmi? Vi posto il codice dei metodi(il metodo statico per l'inserimento sta nella classe Dizionario)

    Grazie

    Archivio -ciclo principale

    codice:
    Archivio listaDizionari=new Archivio();
            Dizionario nuovoDizionario=new Dizionario();
    
    		
    		
    		char scelta;
    	
    		// ciclo principale
    		
    		do{
    		scelta=menuPrincipale(); // carica il menu principale
    		
    		switch(scelta){
    		case 'V':
    		case'v': listaDizionari.visualizzaDizionario(listaDizionari);break; // stampa la collezione dei dizionari
    		case 'S':
    		case's': nuovoDizionario = selezioneDizionario(listaDizionari);
    		         if (nuovoDizionario!=null)
    		        	 nuovoDizionario.operazioniDizionario();
    		        	 
    		         break; // seleziona il  dizionario
    		case 'I':
    		case'i': inserimentoDizionario(listaDizionari);break;// inserisce un nuovo dizionario nella collezione
    		case 'C':
    		case'c': listaDizionari.rimozioneDizionario(listaDizionari);break;// cancella un dizionario dalla collezione
    		case 'Z':
    		case'z':;
    		
    		}
    		
    	}while(scelta!='e' && scelta!='E');
    	System.out.println("\nBye!");

    Dizionario-metodo per le operazioni su dizionario e metodo statico per l'inserimento


    codice:
    		public static Vector<Lemma> operazioniDizionario(){	
    			Dizionario nuovoDizionario=new Dizionario();
    		Vector<Lemma>listaDizionario=new Vector<Lemma>();
    		listaDizionario=nuovoDizionario.listaLemmi;
    			
    		
    			char scelta;
    
    			// ciclo principale
    				do{
    			scelta=menuDizionario();
    			
    			switch(scelta){
    			case 'A':
    			case'a':lemmaIns(listaDizionario) ;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!");
    		return listaDizionario;
    
    
    		
    			
    		}
    codice:
    public  static void lemmaIns(Vector<Lemma>listaDizionario){ 
    	
    			Lemma nuovoLemma=Lemma.leggiLemma();
    			inserisciOrdinato(listaDizionario, nuovoLemma);
         
    					 
    					 System.out.println("Hai inserito il lemma"+" "+nuovoLemma.getTermine()+ " "+ "procedi!");
    
    				
    				}

  2. #2
    Cosa significa che il programma ti restituisce null? Solleva un'eccezione o cosa?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    no, non solleva eccezioni,

    mi restituisce la stringa che avevo scritto per l'inserimento del lemma ("Hai inserito il lemma"+nuovoLemma.getTermine()+"procedi") solo che al posto di nuovoLemma.getTermine() mi stampa "null".

  4. #4
    Originariamente inviato da infoumano86
    no, non solleva eccezioni,

    mi restituisce la stringa che avevo scritto per l'inserimento del lemma ("Hai inserito il lemma"+nuovoLemma.getTermine()+"procedi") solo che al posto di nuovoLemma.getTermine() mi stampa "null".
    Bisognerebbe che ci dici almeno leggilemma e gettermine come sono stati implementati, perchè evidentemente o gettermine non fai l suo lavoro e legge da un oggetto che punta a null oppure è leggilemma che non effettua correttamente la lettura e da un rifermento a null. Insomma avere il codice completo della classe in qeustione potrebbe essere di aiuto per capire cos'è che non va.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  5. #5
    Ok, vi posto il codice della classe Lemma che contiene leggilemma() e get Termine().

    Grazie

    codice:
    import java.util.Vector;
    
    /**
     * Classe Lemma
     * 
     * Legge il termine secondo i dati forniti dall'utente. Definisce la lista dei sinonimi e dei contrari
     */
    
    
    public class Lemma
    {   private Termine termine;
        private Vector<String> sinonimi;
        private Vector<String> contrari;
    	private String nome;
    	private String descrizione;
        
        public Lemma(Termine ilTermine){
        }
        
        
        /**
         *     Costruttore 
         * @param nome
         * @param descrizione 
         * @param sinonimi
         * @param contrari
         */
        
        
        
        public Lemma(String nome, String descrizione, Vector sinonimi, Vector contrari){
            this.nome=nome;
            this.descrizione=descrizione;
            this.sinonimi=sinonimi;
            this.contrari=contrari;
            
        }
        
        
      
    
    
    
    	/**
         * Legge il lemma.
         * @return nome e descrizione del lemma  
         */
        
        
        
        public static Lemma leggiLemma(){  
        	
        	
            return new Lemma(getParola_Descrizione("Inserisci il nome del termine: ", "Nome"), getParola_Descrizione("Inserisci la descrizione del termine: ", "Descrizione"), leggiSinonimi("Inserisci i sinonimi", "Sinonimi"),  leggiContrari("Inserisci i contrari", "Contrari"));
        }
        
        
        
        
        
        /**
         * Controlla che la stringa immessa sia corretta
         * @param la stringa con il testo da controllare
         * @param la stringa riferimento
         * @return <code>true</code> se la stringa contiene solo caratteri alfabetici
         * @return <code>false</code> se la stringa non contiene solo caratteri alfabetici 
         */
        
       public static String getParola_Descrizione(String testo, String rif){
            String parolaInserita="";
            boolean controllo=true;
            String riferimento=rif.trim();
            do{
                parolaInserita=Input.readString(testo).toLowerCase().trim();
                controllo=Parola.controlla(parolaInserita);
                if(controllo){
                    System.out.println(riferimento + " Corretto/a");
                   
                    
                }else{
                    System.out.println(riferimento + " Errato/a");
                }
            }while(!controllo);
           
          
       
            return parolaInserita;
       
       }
        
       
       /**
        * Legge i sinonimi del termine
        * @param testo
        * @param rif
        * @return i sinonimi del termine
        */
       
       
       public static Vector<String> leggiSinonimi(String testo, String rif){
    	   
    	   Vector<String> sinonimi = new Vector<String>();
    	   String sinonimiInseriti="";
           boolean controllo=true;
           String riferimento=rif.trim();
           char uscita=Input.readChar("Vuoi inserire i sinonimi? s/n: ");
           if(uscita=='s')
           do{
               
            	   if(controllo){
            	   sinonimiInseriti=Input.readString(testo).toLowerCase().trim();
                   controllo=Parola.controlla(sinonimiInseriti);
            	   sinonimi.add(sinonimiInseriti);
               System.out.println(riferimento + " Corretto/a");
               
               }
              else{
                   System.out.println(riferimento + " Errato/a");
               }uscita=Input.readChar("Vuoi inserire altri sinonimi? s/n: ");
               
              
              
               
           }while(!controllo || uscita!='n'); System.out.println();System.out.println("Procedi all'inserimento dei contrari");
          
    return sinonimi;
      
    	   
    	   
    	   
       }
       
       
       /**
        * Legge i contrari del termine
        * @param testo
        * @param rif
        * @return i contrari del termine
        */
       
     public static Vector<String> leggiContrari(String testo, String rif){
    	   
    	   Vector<String> contrari = new Vector<String>();
    	   String contrariInseriti="";
           boolean controllo=true;
           String riferimento=rif.trim();
           char uscita=Input.readChar("Vuoi inserire i contrari? s/n: ");
           if(uscita=='s')
           do{
             contrariInseriti=Input.readString(testo).toLowerCase().trim();
               controllo=Parola.controlla(contrariInseriti);
               if(controllo){
            	   contrari.add(contrariInseriti);
                   System.out.println(riferimento + " Corretto/a");
        
               }else{
                   System.out.println(riferimento + " Errato/a");
               }uscita=Input.readChar("Vuoi inserire altri contrari? s/n: ");
           }while(!controllo || uscita!='n');System.out.println();
          
    return contrari;
      
    	   
    	   
    	   
       }
       
    	   
    	   
       
       
       
       
       
       
       
        
        
        
        
        
        
        /**
         * restituisce il vettore sinonimi, di tipo stringa
         * @return sinonimi
         */ 
        
        public Vector<String> getSinonimi(){
            return sinonimi;
        }
        
        
        /**
         * restituisce il vettore contrari, di tipo stringa
         * @return contrari
         */ 
        
        
        public Vector<String> getContrari(){
            return contrari;
        }
    
        /**
         * restituisce il termine
         * @return termine
         */ 
    	public Termine getTermine() {
    		// TODO Auto-generated method stub
    		return termine;
    	}
    	/**
         * restituisce la dimensione di lemma
         * @return la dimensione
         */ 
    
    	public static int size() {
    		// TODO Auto-generated method stub
    		return Lemma.size();
    	}
    
    	/**
         * controlla la presenza di sinonimi nel vettore Lemma
         * @return <code>true</code> se il vettore contiene  sinonimi
         * @return <code>false</code> se il vettore non contiene sinonimi
         */ 
    
    	
    	public static boolean checkSinonimi(){
    		
    		Lemma nuovolemma=Lemma.leggiLemma();
    		
    		if(nuovolemma.sinonimi.isEmpty())
    			return false;
    		else
    		return true;
    		
    		
    		
    	}
    	
    	// inserire controlli di consistenza
    	public boolean isSinonimo(String parola) {
    		return sinonimi.contains(parola);
    		
    	}
    	public boolean isContrario(String parola) {
    		return contrari.contains(parola);
    		
    	}
    	public boolean isSinonimoEContrario(String parola) {
    		return sinonimi.contains(parola) && contrari.contains(parola);
    		
    	}
    	public boolean isSinonimoOContrario(String parola) {
    		return sinonimi.contains(parola) || contrari.contains(parola);
    	}
    	
    	
    	
    	/**
         * controlla la presenza di contrari nel vettore Lemma
         * @return <code>true</code> se il vettore contiene contrari
         * @return <code>false</code> se il vettore non contiene contrari
         */ 
    	
    public static boolean checkContrari(){
    		
    		Lemma nuovolemma=Lemma.leggiLemma();
    		
    		if(nuovolemma.contrari.isEmpty())
    			return false;
    		else
    		return true;
    		
    		
    		
    	}
    	
    	public int compareTo(Lemma other) {
    		return termine.compareTo(other.termine);
    	}
    	    }

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.