[b]QUESTA E LA CLASSE COL MAIN[b/]
	codice:
	public class CuoriSolitariMain 
{
 private static final String MESSAGGIO_NICKNAME="Inserire nickname: ";
 private static final String MESSAGGIO_ETA="Inserire età: ";
 private static final String MESSAGGIO_SESSO="Inserire M se maschio oppure F se femmina: ";
 private static final String MESSAGGIO_SEGNO="Inserire segno zodiacale%n";
 private static final String MESSAGGIO_SEGNO_PARTNER="Inserire segno zodiacale del partner ideale%n";
 private static final String MESSAGGIO_INIZIALE="Benvenuto!";
 private static final String MESSAGGIO_INTESTAZIONE="%nInserisci i tuoi dati Cuore Solitario!%n";
 private static final int MAGGIORE_ETA=18;
 private static final int SOGLIA_ETA=120;
 private static final String MESSAGGIO_MAGGIORE_ETA="Servizio riservato ai maggiorenni!";
 private static final String MESSAGGIO_SOGLIA_ETA="Età improbabile!";
 
 public static void main(String[] args) 
 {
  saluta();
  stampa_intestazione();
  CuoreSolitario persona1=creaDati();
  stampa_intestazione();
  CuoreSolitario persona2=creaDati(); 
  persona1.check_affinità(persona2);
 }
	 
 
 public static void saluta()
 {
  System.out.println(MESSAGGIO_INIZIALE);
 }
	 
 
 public static CuoreSolitario creaDati()
 {
  String nickname_in=MyUtil.leggiStringa(MESSAGGIO_NICKNAME);
  int età_in=MyUtil.leggiInteroRange(MESSAGGIO_ETA, MESSAGGIO_MAGGIORE_ETA, MESSAGGIO_SOGLIA_ETA, MAGGIORE_ETA, SOGLIA_ETA);
  char sesso_in=MyUtil.leggiCarattere(MESSAGGIO_SESSO);
  Zodiaco segno_in=Zodiaco.leggiSegno(MESSAGGIO_SEGNO);
  Zodiaco segnoPartner_in=Zodiaco.leggiSegno(MESSAGGIO_SEGNO_PARTNER);
  return new CuoreSolitario(nickname_in,età_in,sesso_in,segno_in,segnoPartner_in);
 }
	 
 
 public static void stampa_intestazione()
 {
  System.out.printf(MESSAGGIO_INTESTAZIONE);
 }
}
 
E QUESTA E' UNA CLASSE DOVE C'E' UN METODO PER LEGGERE STRINGHE CON RELATIVI CONTROLLI
	codice:
	import java.util.*;
public class MyUtil 
{
 private static Scanner lettore=creaLettore();
 private static final String ERRORE_STRINGA_VUOTA="Errore: nessun carattere inserito!";
 private static final String ERRORE_FORMATO_CARATTERE="Errore: inserire M o F!";
 private static final String ERRORE_FORMATO_INTERO="Errore: inserire un numero intero!";
 
 public static Scanner creaLettore()
 {
  Scanner lettore=new Scanner(System.in);
  String aCapo=System.getProperty("line.separator");
  lettore.useDelimiter(aCapo);
  return lettore;
 }
 
 public static String leggiStringa(String messaggio)
 {
  boolean finito=false;
  String stringaLetta="";
  do
  {
   System.out.printf(messaggio);  
   stringaLetta=lettore.next();
   stringaLetta=stringaLetta.trim();
   if (!stringaLetta.equals(""))
	    finito=true;
   else
	    System.out.println(ERRORE_STRINGA_VUOTA);
  }
  while(!finito);
  return stringaLetta;
 }
 
 public static int leggiIntero(String messaggio)
 {
  boolean finito=false;
  int valoreLetto=0;
  do
  {
   System.out.printf(messaggio);
   if(lettore.hasNextInt())
   	{
	 valoreLetto=lettore.nextInt();
	 finito=true;
   	}
   else
   {
	 System.out.println(ERRORE_FORMATO_INTERO);
	 String daButtare=lettore.next();
   }
  }
  while(!finito);
  return valoreLetto;
 }
 
 public static char leggiCarattere(String messaggio)
 {
  boolean finito=false;
  char carattereLetto='\0';
  do
  {
   String lettura=leggiStringa(messaggio);
   lettura=lettura.toUpperCase();  
   if (lettura.length()>2)									//controllo che venga inserito 1 solo carattere
	    System.out.println(ERRORE_FORMATO_CARATTERE);
   else
       {
	    carattereLetto=lettura.charAt(0);
	    if((carattereLetto=='M')||(carattereLetto=='F'))
	    	finito=true;
	    else
	    	System.out.println(ERRORE_FORMATO_CARATTERE);	
       }
  }
  while(!finito);
  return carattereLetto;
 }
 
 
 public static int leggiInteroRange(String messaggio,String messaggioErroreMin,String messaggioErroreMax,int sogliaMin,int sogliaMax)
 {
  boolean finito=false;										
  int valoreLetto=0;
  do
  {
   valoreLetto=leggiIntero(messaggio);
   if ((valoreLetto>=sogliaMin)&&(valoreLetto<=sogliaMax))
	   finito=true;
   else
   	{
	   if (valoreLetto>sogliaMax)
	   {
	   	System.out.println(messaggioErroreMax);
	    finito=false;   
	   }
	   else
	   {
		System.out.println(messaggioErroreMin);
	    finito=false;
	   }
   	}
  }
  while(!finito);
 return valoreLetto;
 }
}