scusa mi ero dimenticato di specificare che questa classe deve leggere da input, non solo il nome ma anche una descrizione. Per questo ho definito due classi, Termine e Lemma.

Di conseguenza dovrei duplicare il metodo di controllo, esiste una soluzione più semplice, tipo integrare il for di controllo nel ciclo do-while?

Ecco il codice che ho provato a scrivere, purtroppo continua a nn funzionare correttamente:

Termine
Codice PHP:
     /**
     * Classe Termine
     * 
     * Descrive il nome e la descrizione dell'oggetto termine.
     */


public class Termine {

    
String nome;
    
String descrizione;
    
     
/**
     * Costruttore Termine vuoto
     */
    
    
public Termine(String nomeString descrizione){ 
        
        
this.nome=nome;
        
this.descrizione=descrizione;
                
        
    }
    
    


    
    
        
     
/**
     * Restituisce il nome del termine come stringa.
     * @ return il nome del termine.
     */
    
        
public String getName(){ 
            
            
            return 
nome;


            }        
        

            
        
        
         
/**
         * Restituisce la descrizione del termine come stringa.
         * @ return la descrizione del termine.
         */
        

            
public String getDesc(){ 
                
                
                return 
descrizione;


                }        
        

            } 
Lemma



Codice PHP:
import java.util.Vector;

/**
 * Classe Lemma
 * estende la classe Termine con la lista dei sinonimi e dei contrari
 * 
 * 
 * 
 * */

public class Lemma extends Termine{
    
     
String [] sinonimi;
     
String [] contrari;    

     public 
Lemma(String nomeString descrizione) {
        
super(nome,descrizione);
        
this.sinonimi=sinonimi;
        
this.contrari=contrari;
        
    }
    
     public static 
Lemma ReadLemma(){
         
// metodo per la lettura del nome e della descrizione del termine
String nome;

boolean checkname=false;
do{
    
nome=Input.readString("Inserisci il nome del termine");
    
nome=nome.toLowerCase();
    
checkname=controllonome(nome);
    if(
checkname==true)
         
System.out.println("Nome corretto");
    
    else
        
System.out.println("Nome sbagliato, riprova!");
    
    
}while(
checkname==false );


String descrizione;
do{
    
descrizione=Input.readString("Inserisci la descrizione del termine");
    
descrizione=descrizione.toLowerCase();
    
    if( !
controllodesc(descrizione) )
        return 
null;
    
    
}while(
descrizione.equals(""));



return new 
Lemma(nomedescrizione);
         

         } 


     public static  
boolean controllonome(String nome){
    


         for(
int i=0;i<=nome.length()-1;i++){
         
int ch=nome.charAt(i);
         if(
ch<'a' && ch>'z'){
         return 
false;
         }
         }
         return 
true;
     
     
     }
     
     
     

     public  static 
boolean controllodesc(String descrizione){



         for(
int i=0;i<descrizione.length()-1;i++){
         
int ch=descrizione.charAt(i);
         if(
ch>='a' && ch<='z')
         return 
false;
         }
         return 
true;
     
     
     }
     
     
     
     
     
     
     
     
     
     
     
     

     
/**
         * Restituisce i sinonimi del termine.
         * @ return i sinonimi del termine.
         */
        
            
public String[] getSinonimi(){ 
                
                
                return 
sinonimi;


                }        
            
    
             
/**
             * Restituisce i sinonimi del termine.
             * @ return i sinonimi del termine.
             */
            
                
public String[] getContrari(){ 
                    
                    
                    return 
contrari;


                    }        
    
    
                
        
    } 


Grazie