Controllo caratteri nomi/cognomi

This commit is contained in:
La Programmatrice Verde 2025-11-06 15:44:26 +01:00
parent 6d7155f529
commit 495f9f81c7
2 changed files with 37 additions and 9 deletions

View File

@ -17,8 +17,6 @@ import utility.GestisciStringhe;
*/ */
public class GestisciCodiceFiscale { public class GestisciCodiceFiscale {
static final String[] CARATTERI_DA_RIMUOVERE = { " ", "'", "`" };
public static String CalcolaCodiceFiscale(String nome, String cognome, Date dataNascita, String luogo, public static String CalcolaCodiceFiscale(String nome, String cognome, Date dataNascita, String luogo,
String sesso) { String sesso) {
return CalcolaPrimaTerna(cognome) + CalcolaSecondaTerna(nome) + CalcolaSettimoOttavo(dataNascita) return CalcolaPrimaTerna(cognome) + CalcolaSecondaTerna(nome) + CalcolaSettimoOttavo(dataNascita)
@ -28,7 +26,7 @@ public class GestisciCodiceFiscale {
static String CalcolaPrimaTerna(String cognome) { static String CalcolaPrimaTerna(String cognome) {
String ritorno; String ritorno;
for (String carattere : CARATTERI_DA_RIMUOVERE) { for (String carattere : MainComune.CARATTERI_DA_RIMUOVERE) {
cognome = GestisciStringhe.rimuoviCarattere(cognome, carattere); cognome = GestisciStringhe.rimuoviCarattere(cognome, carattere);
} }
@ -187,7 +185,7 @@ public class GestisciCodiceFiscale {
static String CalcolaSecondaTerna(String nome) { static String CalcolaSecondaTerna(String nome) {
String ritorno; String ritorno;
for (String carattere : CARATTERI_DA_RIMUOVERE) { for (String carattere : MainComune.CARATTERI_DA_RIMUOVERE) {
nome = GestisciStringhe.rimuoviCarattere(nome, carattere); nome = GestisciStringhe.rimuoviCarattere(nome, carattere);
} }

View File

@ -19,6 +19,7 @@ public class MainComune {
static Scanner sc = new Scanner(System.in); static Scanner sc = new Scanner(System.in);
static final String PATTERN_DATA = "dd/MM/yyyy"; static final String PATTERN_DATA = "dd/MM/yyyy";
static final String[] sessiAmmessi = { "m", "f" }; static final String[] sessiAmmessi = { "m", "f" };
static final String[] CARATTERI_DA_RIMUOVERE = { " ", "'", "`", "-" };
public static void main(String[] args) { public static void main(String[] args) {
int scelta = -1; int scelta = -1;
@ -39,7 +40,8 @@ public class MainComune {
case 0: case 0:
break; break;
case 1: 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(); pausa();
break; break;
case 2: case 2:
@ -71,11 +73,9 @@ public class MainComune {
String sesso; String sesso;
Anagrafica ritorno; Anagrafica ritorno;
System.out.print("Inserire il nome, compresi eventuali secondi nomi: "); nome = nomeCognome(true);
nome = sc.nextLine().trim();
System.out.print("Inserire il cognome, compresi eventuali secondi cognomi: "); cognome = nomeCognome(false);
cognome = sc.nextLine().trim();
dataNascita = dataNascita(); dataNascita = dataNascita();
@ -88,6 +88,36 @@ public class MainComune {
return ritorno; 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() { static Date dataNascita() {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATA); SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATA);
Date ritorno = null; Date ritorno = null;