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 nome, String 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 nome, String 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(nome, descrizione);
}
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