[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;
}
}