diff --git a/src/appComune/GestisciCodiceFiscale.java b/src/appComune/GestisciCodiceFiscale.java index 0393a86..3fdc82c 100644 --- a/src/appComune/GestisciCodiceFiscale.java +++ b/src/appComune/GestisciCodiceFiscale.java @@ -17,8 +17,6 @@ import utility.GestisciStringhe; */ public class GestisciCodiceFiscale { - static final String[] CARATTERI_DA_RIMUOVERE = { " ", "'", "`" }; - public static String CalcolaCodiceFiscale(String nome, String cognome, Date dataNascita, String luogo, String sesso) { return CalcolaPrimaTerna(cognome) + CalcolaSecondaTerna(nome) + CalcolaSettimoOttavo(dataNascita) @@ -28,7 +26,7 @@ public class GestisciCodiceFiscale { static String CalcolaPrimaTerna(String cognome) { String ritorno; - for (String carattere : CARATTERI_DA_RIMUOVERE) { + for (String carattere : MainComune.CARATTERI_DA_RIMUOVERE) { cognome = GestisciStringhe.rimuoviCarattere(cognome, carattere); } @@ -187,7 +185,7 @@ public class GestisciCodiceFiscale { static String CalcolaSecondaTerna(String nome) { String ritorno; - for (String carattere : CARATTERI_DA_RIMUOVERE) { + for (String carattere : MainComune.CARATTERI_DA_RIMUOVERE) { nome = GestisciStringhe.rimuoviCarattere(nome, carattere); } diff --git a/src/appComune/MainComune.java b/src/appComune/MainComune.java index 44f0f8f..e21af1e 100644 --- a/src/appComune/MainComune.java +++ b/src/appComune/MainComune.java @@ -19,6 +19,7 @@ public class MainComune { static Scanner sc = new Scanner(System.in); static final String PATTERN_DATA = "dd/MM/yyyy"; static final String[] sessiAmmessi = { "m", "f" }; + static final String[] CARATTERI_DA_RIMUOVERE = { " ", "'", "`", "-" }; public static void main(String[] args) { int scelta = -1; @@ -39,7 +40,8 @@ public class MainComune { case 0: break; case 1: - System.out.println("Cittadino aggiunto con successo:\n" + aggiungiCittatino(cittadini).toString()); + System.out.println( + "Cittadino aggiunto con successo:\n" + aggiungiCittatino(cittadini).toString()); pausa(); break; case 2: @@ -71,11 +73,9 @@ public class MainComune { String sesso; Anagrafica ritorno; - System.out.print("Inserire il nome, compresi eventuali secondi nomi: "); - nome = sc.nextLine().trim(); + nome = nomeCognome(true); - System.out.print("Inserire il cognome, compresi eventuali secondi cognomi: "); - cognome = sc.nextLine().trim(); + cognome = nomeCognome(false); dataNascita = dataNascita(); @@ -88,6 +88,36 @@ public class MainComune { return ritorno; } + static String nomeCognome(boolean isNome) { + boolean error; + String ritorno; + + do { + error = false; + + System.out.print("Inserire il " + (isNome ? "" : "cog") + "nome, compresi eventuali secondi " + + (isNome ? "" : "cog") + "nomi: "); + ritorno = sc.nextLine().trim(); + for (int i = 0; i < ritorno.length() && !error; i++) { + error = !Character.isLetter(ritorno.charAt(i)) && !isCarattereDaRimuovere(ritorno.charAt(i)); + } + if (error) { + System.out.println("Errore: sono ammesse solo lettere nel " + (isNome ? "" : "cog") + "nome."); + pausa(); + } + } while (error); + + return ritorno; + } + + static boolean isCarattereDaRimuovere(char c) { + boolean exit = false; + for (int i = 0; i < CARATTERI_DA_RIMUOVERE.length && !exit; i++) { + exit = Character.toString(c).equals(CARATTERI_DA_RIMUOVERE[i]); + } + return exit; + } + static Date dataNascita() { SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATA); Date ritorno = null;